LRANGE и LLEN

Тема дорожной карты · Redis

LRANGE key start stop возвращает элементы списка Redis между индексами start и stop включительно, где 0 — первый элемент, а -1 — последний. LLEN key возвращает общее количество элементов в списке, что удобно для мониторинга глубины очереди или разбиения на страницы. LRANGE key 0 -1 получает весь список, что удобно для отладки, но следует избегать на больших списках в продакшне во избежание блокировки Redis-сервера. Индексы списков Redis поддерживают отрицательные значения: -1 означает последний элемент, -2 — предпоследний и так далее. Сочетание LRANGE с LLEN обеспечивает эффективный постраничный обход списков Redis — например, получение 20 последних элементов ленты активности из списка с ограничением, поддерживаемого командой LTRIM.

Как это работает

LRANGE и LLEN — два фундаментальных типа. Lists (LPUSH/RPUSH/LPOP/RPOP/LRANGE) — связные списки: быстрый push/pop с обоих концов (O(1)), медленный random access (O(N)). Hashes (HSET/HGET/HGETALL/HMSET) — мэп поле→значение внутри одного ключа: идеально для object-like данных (юзер с name, email, plan). Оба отлично подходят для queue-паттернов (BLPOP/BRPOP — блокирующие) и per-entity хранения атрибутов.

Когда применять

Lists — для очередей (LPUSH producer + BRPOP consumer — базовая work queue), таймлайнов недавней активности (LPUSH + LTRIM хранит последние N), упорядоченных логов. Hashes — когда у одной сущности много полей и вы запрашиваете по ID сущности: эффективно по памяти (один ключ на сущность) и атомарные апдейты по полю. Redis Streams (настоящий append-only лог с consumer groups) — предпочитайте list-based очередям на production-масштабе.

Типичные ошибки

Ловушки LRANGE и LLEN: гигантский HGETALL на хеше с 100K полей (блокирующая команда; весь хеш сериализуется); lists как очередь сообщений с at-least-once (нужны ack — используйте Redis Streams); LRANGE 0 -1 на миллион-элементном списке (network buffer старит всех); неограниченный рост списка (max length через LPUSH ... LTRIM 0 N-1).

Связанные понятия

Полезные ресурсы