Files
knowledge-base/REDIS.md
Stanislav Hubacek 95d1839f05 First batch
2026-06-11 15:27:28 +02:00

6.3 KiB

🔴 Redis

Přehled

Redis je in-memory key-value store s pokročilými datovými strukturami, používaný primárně jako cache, session store, message broker a real-time databáze. Běží v RAM s možností persistence na disk (RDB/AOF).

Data structures

Struktura Popis Use case
String Binární string (max 512 MB) Cache hodnoty, session tokeny, counters
Hash Map field-value Uživatelský profil, objekt v cache
List Linked list (push/pop na oba konce) Queue (RPUSH/LPOP), log stream
Set Unikátní hodnoty (unordered) Tags, deduplikace, memberships
Sorted Set Unikátní + score (řazení) Leaderboardy, rate limiting, timeouts
Bitmap Bitové pole Feature flagy, daily active users
HyperLogLog Approximate cardinality (12 KB = 2^64) Unikátní návštěvníci (error < 1 %)
Stream Append-only log (Kafka-like) Event store, messaging
Geospatial Geo-indexing (GEOADD, GEOSEARCH) Lokalitní dotazy, proximity search
JSON JSON dokument (RedisJSON modul) Dokumentové struktury

Eviction policies

Policy Popis Use case
noeviction Chyba při zápisu když je plno Transakční data, neztrácet
allkeys-lru LRU na všechny klíče Obecná cache, standard
allkeys-lfu LFU na všechny klíče Často přistupovaná data
volatile-lru LRU na klíče s TTL Cache s expirací
volatile-ttl Nejblíž k expiraci Krátkodobá data
allkeys-random Náhodný Testování

Redis Cluster vs Sentinel

Vlastnost Redis Sentinel Redis Cluster
Škálování Read replicas (master + replica) Data sharding (16384 hash slotů)
Auto-failover Ano (Sentinel) Ano (gossip-based)
Multi-key ops Ano (transactiony na masteru) Omezené (stejný hash slot)
Client komunikace Přes Sentinel (deprecated) Cluster nodes redirect (MOVED/ASK)
Minimální uzly Master + Replica + 3 Sentinel 3 masters (každý s replikou)
Use case Vysoká dostupnost, single shard Multi-shard, horizontální škálování

Persistence

Metoda Popis RTO RPO Use case
RDB (Redis Database) Periodický snapshot do dump.rdb Minuty Poslední snapshot Cache, ztráta tolerována
AOF (Append-Only File) Append-only log všech write operací Sekundy 1 s (fsync every sec) Data nesmí být ztracena
RDB + AOF Kombinace Sekundy 1 s Doporučeno pro produkci

Moduly (RediSearch, RedisJSON, RedisGraph)

Redis rozšiřitelný modulem:

  • RediSearch — full-text search, facety, prefix/suffix vyhledávání
  • RedisJSON — JSON path dotazy, manipulace dokumentů
  • RedisGraph — grafová DB (na bázi Cypher, deprecated od 2025)
  • RedisTimeSeries — time-series s downsamplingem, retention politikami
  • RedisBloom — Bloom filtry, Cuckoo filtry, Top-K, Count-Min Sketch

Memcached vs Redis

Vlastnost Redis Memcached
Data structures String, Hash, List, Set, Sorted Set, Stream, JSON Pouze String
Persistence RDB + AOF Žádná (čistě in-memory)
Replication Master-replica, Cluster Žádná (multi-threaded)
Eviction 6 politik LRU pouze
Lua scripting Ano (EVAL) Ne
Transakce Ano (MULTI/EXEC) Ne
Pub/Sub Ano Ne
Streaming Ano (Stream) Ne

Doporučení — v čem je Redis lepší

Oblast Redis Konkurence Proč Redis
Cache (in-memory) < 1 ms latence, 6 eviction politik Memcached (pouze LRU string) Bohatší datové typy, persistence, cluster
Session store Hash + TTL, Cluster pro HA DynamoDB (vyšší latence) Jednodušší, rychlejší, nativní expirace
Rate limiting Sorted Set (sliding window counter) Aplikace v DB (složité) Atomic operace, vestavěná logika
Leaderboard / scoring Sorted Set (ZADD, ZRANK, ZREVRANGE) SQL (ORDER BY + COUNT = expensive) O(1) rank, O(log N) insert
Message queue List/Stream (RPUSH+BLPOP) Kafka (těžká, JVM) Lehká, embedded, žádný broker
Real-time analytics HyperLogLog + Bitmap + Stream ClickHouse (těžká analytika) Agregace v reálném čase, malá RAM
Geolokace GEOADD, GEOSEARCH, GEODIST PostGIS (těžší, disk-based) In-memory, ideální pro real-time

Kdy použít Redis

  • Cache pro API — response cache, DB query cache, session cache
  • Session management — distribuované session napříč servery
  • Rate limiting — API gateway, per-user/per-IP limity
  • Leaderboardy / žebříčky — real-time skórování
  • Message broker — fronta úloh (RQ, Celery s Redis), pub/sub notifikace
  • Real-time analytics — počítání unikátů, metrik, dashboardů
  • Geoproxmity — "najdi nejbližší pobočku" v < 1 ms

Kdy použít něco jiného

  • Trvalá data s SQL dotazy → PostgreSQL nebo MySQL
  • Velké objemy > RAM → Memcached (multi-threaded), Dragonfly (více RAM utilization)
  • Dlouhodobá fronta zpráv → Kafka, RabbitMQ (disk-based persistence)
  • Dokumentová DB → MongoDB (persistentní, komplexní dotazy)

Redis licensing

Redis prošel zásadní změnou licence v roce 2024:

Období Licence Podmínky
Do března 2024 BSD 3-clause (open source) Zcela volné použití, včetně managed služeb
Od března 2024 RSALv2 + SSPL (dual license) SSPL: pokud nabízíte Redis jako managed službu, musíte uvolnit celý stack jako open source. RSALv2: omezení na cloud provozovatele
Valkey (fork, Linux Foundation) BSD 3-clause Plně open source fork Redis 7.2, podpora od Linux Foundation, AWS, Google, Oracle

Dopad: Managed Redis služby (AWS ElastiCache, Google Memorystore, Azure Cache for Redis) nemohou používat Redis 7.4+ bez komerční licence → přechází na Valkey. Pro self-hosted Redis beze změny — RSALv2/SSPL neomezuje interní použití.

Zdroje

Odkazy, knihy a standardy: sources/databases/sources.md

Poslední revize: 2026-06-03