diff --git a/REDIS.md b/REDIS.md deleted file mode 100644 index e7d2b1c..0000000 --- a/REDIS.md +++ /dev/null @@ -1,119 +0,0 @@ -# 🔴 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](sources/databases/sources.md) - -*Poslední revize: 2026-06-03*