Redis listy jsou seřazené kolekce řetězců (implementované jako propojené seznamy) s rychlým push/pop na obou koncích. Běžně se používají k implementaci front a zásobníků — jednoduchý a populární způsob, jak používat Redis pro zpracování úloh a seřazená data.
Operace se seznamy
LPUSH mylist "a" # push to the LEFT (head)
RPUSH mylist "b" # push to the RIGHT (tail)
LPOP mylist # pop from the LEFT
RPOP mylist # pop from the RIGHT
LRANGE mylist 0 -1 # get a range (0 to -1 = all elements)
LLEN mylist # length
LINDEX mylist 0 # element at an index
Push/pop na obou koncích jsou rychlé (O(1)). LRANGE čte rozsahy. Tyto operace dělají ze seznamů ideální řešení pro seřazená data podobná frontám.
Implementace fronty (FIFO)
# Producer adds jobs; consumer processes them in order (FIFO)
LPUSH job_queue "job1" # producer pushes to the left
LPUSH job_queue "job2"
RPOP job_queue # consumer pops from the right => "job1" (first in, first out)
# push left + pop right = FIFO queue
Fronta (first-in-first-out): producenti používají LPUSH (přidání na jeden konec), konzumenti používají RPOP (odebrání z druhého konce) — klasický vzor Redis fronty pro úlohy.
Blokující pop operace (efektivní konzumenti)
# BRPOP blocks (waits) until an element is available — no busy polling
BRPOP job_queue 5 # wait up to 5 seconds for a job (0 = wait forever)
# → the consumer efficiently waits for work instead of repeatedly polling
Blokující pop (BLPOP/BRPOP) umožňuje konzumentovi efektivně čekat na nové položky namísto neustálého dotazování — důležité pro responsivní a efektivní pracovníky front.
Zásobník a další vzory
# STACK (LIFO): push and pop from the SAME end
LPUSH stack "a"; LPOP stack # last in, first out
# capped list (e.g. keep the last 100 items — recent activity feed)
LPUSH recent "event"; LTRIM recent 0 99 # keep only indices 0-99
Proč na tom záleží
Redis listy a jejich využití pro fronty jsou běžně aplikovanou a praktickou znalostí o Redisu, takže jejich porozumění je cenné pro mnoho reálných případů použití.
Listy (seřazené kolekce řetězců s rychlým O(1) push/pop na obou koncích) jsou všestranné, ale jejich nejdůležitější aplikací je implementace front — pomocí LPUSH/RPOP (nebo opačně) vytvořit FIFO frontu pro úlohy, kde producenti přidávají práci a konzumenti ji zpracovávají v pořadí, jednoduchý a velmi časty vzor pro zpracování úloh na pozadí, distribuci úkolů a oddělení producentů od konzumentů.
To činí Redis populární lehkým systémem pro zprávy/fronty bez potřeby dedikovaného systému front pro jednodušší potřeby.
Porozumění blokujícím pop (BLPOP/BRPOP) je obzvláště důležité pro efektivní pracovníky front — umožňují konzumentům čekat na nové položky místo plýtvání procesoru cyklickým dotazováním, čímž jsou pracovníci responsivní a efektivní (klíčová praktická technika pro reálné implementace front).
Znalost dalších vzorů — zásobníky (LIFO, push/pop na stejném konci) a omezené listy (pomocí LTRIM k uchování pouze posledních N položek, ideální pro feeds aktivit a seznamy nedávných položek) — rozšiřuje užitečnost listů.
Protože fronty pro úlohy a seřazená data jsou běžné potřeby a Redis listy poskytují jednoduchý, rychlý a populární způsob, jak implementovat fronty (s blokujícím pop pro efektivní konzumenty), zásobníky a feeds s nedávnými položkami, pochopení Redis listů a vzoru front je cenná a často používaná znalost pro používání Redisu v reálných aplikacích, jedno z nejčastějších praktických použití Redisu mimo caching a stavební prvek pro zpracování na pozadí a oddělené architektury.
