# Redis Databases (db=0..15) — Best Practices anno 2025 ## Wat zijn Redis DB’s? - Redis ondersteunt meerdere logische databases (`0..15`, standaard). - Elke DB heeft een eigen keyspace, maar **alles deelt dezelfde instance**: - Geheugen (`maxmemory`) - Eviction-policy - Persistence-bestanden - ACL’s (geen DB-specifieke rechten) - Replicatie - In **Redis Cluster** bestaat enkel DB 0. --- ## Nadelen van meerdere DB’s - **Geen isolatie**: eviction en memory zijn gedeeld. - **Niet cluster-compatibel**: alleen DB 0 werkt. - **Meer connection pools**: elke DB → aparte pool → meer sockets. - **Moeilijke security**: ACL’s gelden niet per DB, enkel via key-prefixes. - **Operationele verwarring**: `SELECT` vergeten → keys zoek je in de verkeerde DB. --- ## Wanneer werden ze gebruikt? - Vroeger voor simpele scheiding: bv. DB 0 cache, DB 1 sessions. - Mogelijkheid om `FLUSHDB` te doen zonder alle data kwijt te zijn. - Legacy clients/tools verwachtten meerdere DB’s. --- ## Moderne best practices ✅ **Gebruik altijd DB 0** (zeker als je ooit naar Redis Cluster wil). ✅ **Organiseer data met key-prefixes** (bv. `cache:`, `sess:`, `celery:`). ✅ **Gebruik ACL’s per prefix** voor toegangscontrole. ✅ **Splits workloads in aparte instances** als je echte isolatie nodig hebt (cache vs sessions vs Celery). ✅ **Monitor eviction en memory** (`used_memory`, `evicted_keys`) in plaats van te vertrouwen op DB-splitsing. ❌ **Gebruik geen meerdere DB’s** voor isolatie of multi-tenancy. ❌ **Verlaat je niet op DB’s** voor security of scaling. ❌ **Verwacht geen verschil in eviction/persistence** tussen DB’s. --- ## Conclusie - Redis-databases zijn een **historisch artefact**. - Ze voegen **geen echte isolatie** toe en schalen niet mee naar Cluster. - **Prefix + ACL’s** zijn de moderne manier om te scheiden. - Voor echte isolatie: gebruik meerdere Redis-instanties of Redis Cluster.