When to use this skill
Use this skill whenever the user wants to:
- Use Redis data structures (string, hash, list, set, sorted set) and commands
- Implement caching, session storage, rate limiting, or message queues with Redis
- Configure persistence (RDB/AOF), replication, Sentinel, or Redis Cluster
- Write Lua scripts for atomic Redis operations
- Connect via redis-cli or language drivers (connection pooling, serialization)
How to use this skill
Workflow
- Identify the use case - Caching, session store, queue, pub/sub, or data structure
- Choose the data structure - String for simple values, Hash for objects, List for queues, Sorted Set for rankings
- Implement with appropriate commands - Use the patterns below
- Configure persistence and replication - Based on durability requirements
Quick-Start Example: Caching with TTL
# Set a cache entry with 5-minute TTL
redis-cli SET user:1001:profile '{"name":"Alice","role":"admin"}' EX 300
# Retrieve the cached value
redis-cli GET user:1001:profile
# Check remaining TTL
redis-cli TTL user:1001:profile
Rate Limiting with Sorted Sets
# Add request timestamp to sorted set
redis-cli ZADD rate:user:1001 1710000000 "req1"
# Count requests in the last 60 seconds
redis-cli ZRANGEBYSCORE rate:user:1001 1709999940 1710000000
# Remove expired entries
redis-cli ZREMRANGEBYSCORE rate:user:1001 0 1709999940
Best Practices
- Use namespaced keys - Format as
service:entity:id:field(e.g.,app:user:1001:session) - Always set TTL - Prevent memory leaks from stale data; use
EX/PXon SET - Avoid large keys - Split hashes over 1MB; use SCAN instead of KEYS in production
- Choose persistence wisely - RDB for snapshots (fast restart), AOF for durability (every write)
- Secure production - Require password (
requirepass), bind to private IPs, disableFLUSHALL
Keywords
redis, cache, caching, 缓存, data structures, 数据结构, pub/sub, sentinel, cluster, 主从, 集群, rate limiting, session store, Lua scripting