GET и SET
Тема дорожной карты · Redis
SET key value сохраняет строковое значение в Redis, а GET key извлекает его — это наиболее фундаментальные команды Redis для работы со строковым типом данных. Команда SET принимает необязательные модификаторы: EX seconds задаёт TTL, NX устанавливает ключ только если он не существует (удобно для распределённых блокировок), а XX — только если ключ уже существует. GETSET атомарно устанавливает новое значение и возвращает старое в одной операции, а SETNX (set-if-not-exists) часто используется для паттернов захвата блокировок. Строки Redis бинарно-безопасны и могут хранить любые данные объёмом до 512 МБ, включая сериализованный JSON, бинарные данные или числовые значения, управляемые командами INCR и DECR. Эффективное использование SET и GET с соответствующей сериализацией составляет основу Redis как уровня кэширования в стеке веб-приложений.
Как это работает
GET и SET — простейший тип Redis: бинарно-безопасная последовательность байт до 512MB. Команды: SET, GET, APPEND, STRLEN, GETRANGE, INCR/DECR (атомарные счётчики на string-encoded integer), SETEX (set с TTL), SETNX (set если нет, основа distributed lock до Redlock). TTL через EXPIRE / PEXPIRE; авто-удаление при истечении.
Когда применять
Strings — рабочая лошадка: кеш JSON-ответов, атомарные счётчики (INCR page_views:2026-05-15), простые feature flags, session ID, rate-limit бакеты. SET ... EX ... NX — "set если нет с TTL", основа безопасных single-instance локов. SETBIT/GETBIT — bitmap-трюки (per-user feature flags, bloom-filter-подобные счёты).
Типичные ошибки
Ловушки GET и SET: хранение 50MB JSON-блобов как Redis-strings (network + RAM bloat — храните ID + lookup отдельно); ad-hoc TTL дрейфуют (используйте константу); SETNX для локов в Redis Cluster (используйте Redlock или single-master); APPEND многократно к гигантской строке (O(N²) память). Значения маленькие; Redis это RAM, не диск.