| name | redis-operations |
| type | skill |
| description | Redis operational runbooks — memory management, eviction policy, persistence config, Sentinel/Cluster, K8s-hosted Redis ops. |
| related-rules | ["backup-policy.md","access-control.md"] |
| allowed-tools | Read, Bash |
Skill: Redis Operations
Expertise: Redis memory management, eviction, persistence (RDB+AOF), Redis Sentinel, Redis Cluster, K8s Redis (Bitnami/Spotahome operator).
When to load
When investigating Redis memory pressure, configuring persistence, debugging eviction, or setting up Redis HA.
Health Check Commands
redis-cli -h redis-master -p 6379 -a $REDIS_PASSWORD
redis-cli INFO server | grep -E "redis_version|uptime|tcp_port"
redis-cli INFO memory | grep -E "used_memory_human|used_memory_peak_human|mem_fragmentation_ratio|maxmemory"
redis-cli INFO stats | grep -E "total_commands_processed|rejected_connections|evicted_keys"
redis-cli INFO keyspace
redis-cli --stat
redis-cli MONITOR
redis-cli CONFIG SET slowlog-log-slower-than 10000
redis-cli SLOWLOG GET 20
redis-cli SLOWLOG LEN
redis-cli SLOWLOG RESET
Memory Management
redis-cli MEMORY DOCTOR
redis-cli MEMORY STATS
redis-cli MEMORY USAGE <key>
redis-cli --bigkeys
redis-cli --memkeys
redis-cli INFO memory | grep mem_fragmentation_ratio
redis-cli CONFIG SET activedefrag yes
redis-cli CONFIG SET active-defrag-threshold-lower 10
Eviction Policy
redis-cli CONFIG GET maxmemory-policy
redis-cli CONFIG SET maxmemory-policy allkeys-lru
redis-cli CONFIG SET maxmemory 4gb
redis-cli CONFIG REWRITE
Persistence Configuration
redis-cli CONFIG SET save "3600 1 300 100 60 10000"
redis-cli CONFIG SET appendonly yes
redis-cli CONFIG SET appendfsync everysec
redis-cli BGREWRITEAOF
redis-cli BGSAVE
redis-cli LASTSAVE
Redis Sentinel (HA)
redis-cli -p 26379 SENTINEL masters
redis-cli -p 26379 SENTINEL slaves mymaster
redis-cli -p 26379 SENTINEL sentinels mymaster
redis-cli -p 26379 SENTINEL failover mymaster
sentinel monitor mymaster redis-master 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
K8s Redis (Bitnami Helm)
architecture: replication
auth:
enabled: true
existingSecret: redis-password
existingSecretPasswordKey: password
master:
resources:
requests: { memory: 256Mi, cpu: 100m }
limits: { memory: 1Gi, cpu: 500m }
persistence:
enabled: true
size: 8Gi
replica:
replicaCount: 2
sentinel:
enabled: true
resources:
requests: { memory: 64Mi, cpu: 50m }
limits: { memory: 128Mi, cpu: 100m }
kubectl exec -it redis-master-0 -n cache -- redis-cli ping
kubectl exec -it redis-master-0 -n cache -- redis-cli INFO replication
kubectl exec -it redis-master-0 -n cache -- \
redis-cli -p 26379 SENTINEL failover mymaster
kubectl top pods -n cache -l app.kubernetes.io/name=redis
Common Issues & Fixes
| Symptom | Diagnosis | Fix |
|---|
OOM command not allowed | maxmemory reached + noeviction | Increase maxmemory or change eviction policy |
| High eviction rate | Cache too small or no TTLs on keys | Increase maxmemory; audit keys without TTL |
WRONGTYPE errors | Key type mismatch in application | Flush specific key: DEL <key> |
| Connection refused | maxclients reached | CONFIG SET maxclients 10000 |
| Slow KEYS command | Running KEYS * in production | Replace with SCAN; never use KEYS in prod |
| AOF growing unbounded | Auto-rewrite threshold too high | Lower auto-aof-rewrite-percentage to 50 |