Redis: Optimasi dan Production
Konfigurasi production, monitoring, dan pattern advanced
Tujuan Pembelajaran
- Mengerti Redis persistence options
- Bisa konfigurasi Redis untuk production
- Mengerti Redis Cluster dan Sentinel
Analogi
Production Checklist:
├── Persistence (RDB + AOF)
├── Memory management (maxmemory policy)
├── Security (AUTH, ACL)
├── Monitoring (INFO, Slow Log)
└── High Availability (Sentinel, Cluster)
Redis production membutuhkan konfigurasi yang tepat untuk reliability dan performance
Penjelasan Konsep
Saat menjalankan Redis di production, ada beberapa aspek penting yang harus dikonfigurasi dengan benar.
Persistence
Redis menyimpan data di memory, tapi ada opsi persistensi ke disk:
- RDB (Redis Database): Snapshot data periodic
- Pros: Compact file, fast restore,
Minimal performance impact
- Cons: Data loss antara snapshots (default: 5 menit)
- Config: save 900 1 (save kalau 1 key berubah dalam 900 detik)
- AOF (Append Only File): Log setiap write operation
- Pros: Minimal data loss (max 1 detik dengan appendfsync everysec)
- Cons: File lebih besar,
Slower rewrite
- Config: appendonly yes, appendfsync everysec
- Both: RDB + AOF untuk safety maksimal
Memory Management
Redis akan menggunakan semua memory yang tersedia kalau tidak dibatasi.
Konfigurasi penting:
maxmemory 256mb
maxmemory-policy allkeys-lru
Policies saat memory penuh:
- noeviction: Return error untuk write (default,
Tidak disarankan)
- allkeys-lru: Hapus key yang least recently used
- allkeys-lfu: Hapus key yang least frequently used
- volatile-lru: Hapus key dengan TTL yang LRU
- volatile-ttl: Hapus key dengan TTL terpendek
Untuk caching, allkeys-lru atau allkeys-lfu paling umum.
Security
-
AUTH password: Require password untuk koneksi
requirepass your-strong-password -
ACL (Redis 6+): Fine-grained access control
ACL SETUSER app_user on >password ~app:* +@read +@write -@admin -
Bind address: Hanya listen pada interface tertentu
bind 127.0.0.1 # Hanya localhost -
Protected mode: Hanya menerima koneksi dari localhost
Monitoring
- INFO command: Statistik Redis (memory, connections, commands)
- SLOWLOG: Query yang lambat
- MONITOR: Real-time command monitoring (hati-hati di production!)
Redis Sentinel: High Availability
Sentinel menyediakan automatic failover:
- Monitor Redis master
- Deteksi failure
- Promote slave menjadi master otomatis
- Update client dengan master baru
Redis Cluster: Horizontal Scaling
Cluster memungkinkan Redis di-scale horizontal dengan auto-sharding:
- Data di-partisi ke 16384 hash slots
- Setiap node punya subset slots
- Automatic rebalancing saat node ditambah/dihapus
Contoh Kode
# redis.conf untuk production
# Persistence
appendonly yes
appendfsync everysec
save 900 1
save 300 10
save 60 10000
# Memory
maxmemory 256mb
maxmemory-policy allkeys-lru
# Security
bind 127.0.0.1
requirepass your-secure-password
protected-mode yes
# Logging
loglevel notice
logfile /var/log/redis/redis-server.log
# Slow log (log queries > 10ms)
slowlog-log-slower-than 10000
slowlog-max-len 128
# Docker Compose setup
# docker-compose.yml
version: '3'
services:
redis:
image: redis:7-alpine
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
ports:
- "6379:6379"
volumes:
- redis-data:/data
restart: unless-stopped
volumes:
redis-data:Penjelasan Kode
Prompt AI
Setup Redis dengan Docker Compose. Konfigurasi persistence dan memory limits. Uji dengan load test menggunakan redis-benchmark.
Pertanyaan Reflektif
Redis single-threaded — scaling horizontal dengan Cluster lebih baik daripada vertical scaling untuk write-heavy workloads.