intermediate
Strings
Используйте strings для counters, tokens, blobs, feature values и simple cache entries с clear serialization.
Строки Redis — простейший тип значений, binary-safe blob до 512 MB. Ими реализуют счётчики, feature flags, сериализованный JSON в кэше, session tokens и окна rate limit, когда значение читается или заменяется целиком.
SET session:abc123 '{"userId":42}' EX 3600 NX
INCR page:views:home
INCRBY wallet:user:42 -50
GET feature:dark_mode
SET cache:product:9 '{"title":"Mug"}' EX 300
| Паттерн | Идея команды | |---------|--------------| | Запись кэша | `SET key json EX ttl` | | Счётчик | `INCR` / `INCRBY` — атомарно | | Условная запись | `SET NX` для claim или зачатка lock | | Compare-and-set | `WATCH` + `MULTI` / версия в значении |
Строки дают O(1) для большинства операций с одним ключом. Формат сериализации должен быть явным — JSON, integer или префикс версии — чтобы читатели не путали типы после деплоя.
На интервью: выберите use case со строкой и объясните TTL, atomicity и поведение при eviction или рестарте.
Типовые ошибки: огромные blob вместо object storage; гонки `GET`+`SET` без `WATCH` или Lua; кэш без TTL; бинарные данные без length-aware клиентов.
Компромисс — простота vs частичные обновления: строки идеальны для маленьких атомарно заменяемых значений; полевые изменения — в hashes или другой структуре.
Чеклист:
- Определите сериализацию и версионирование значений.
- Используйте `INCR` для атомарных счётчиков.
- Задавайте TTL для эфемерных данных.
- Объясните влияние на память и eviction по ключу.