# 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.
