Redis High Availability¶
Note: This is optional for homelab setups. Single Redis instance is sufficient for most use cases.
When You Need HA¶
Consider Redis HA if: - Running production workloads - Uptime > 99.9% required - Can't afford to lose queued tasks - Multiple workers across machines
Redis Sentinel (Recommended)¶
Setup¶
# docker-compose.yml
version: '3.8'
services:
redis-master:
image: redis:7-alpine
command: redis-server --maxmemory 2gb
redis-replica:
image: redis:7-alpine
command: redis-server --slaveof redis-master 6379
redis-sentinel-1:
image: redis:7-alpine
command: redis-sentinel /etc/redis/sentinel.conf
volumes:
- ./sentinel.conf:/etc/redis/sentinel.conf
sentinel.conf:
sentinel monitor mymaster redis-master 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 10000
Application Configuration¶
# worker-config.yaml
redis_addr: "redis-sentinel-1:26379,redis-sentinel-2:26379"
redis_master_name: "mymaster"
Redis Cluster (Advanced)¶
For larger deployments with sharding needs.
# Minimum 3 masters + 3 replicas
services:
redis-1:
image: redis:7-alpine
command: redis-server --cluster-enabled yes
redis-2:
# ... similar config
Homelab Alternative: Persistence Only¶
For most homelabs, just enable persistence:
# docker-compose.yml
services:
redis:
image: redis:7-alpine
command: redis-server --appendonly yes
volumes:
- redis_data:/data
volumes:
redis_data:
This ensures tasks survive Redis restarts without full HA complexity.
Recommendation: Start simple. Add HA only if you experience actual downtime issues.