Data Systems
Redis Deep Dive
Redis is more than a cacheβit's a versatile in-memory data structure server. Master its data structures, persistence models, clustering, and the use cases that make it indispensable.
- Speed β Sub-millisecond latency for all operations
- Versatility β Data structures beyond simple key-value
- Durability β Optional persistence to disk
Redis is the Swiss Army knife of in-memory data stores.
Redis Architecture
DfRedis
Redis (Remote Dictionary Server) is an open-source, in-memory data structure store. Unlike simple key-value stores, Redis supports multiple data structures (strings, hashes, lists, sets, sorted sets, streams, HyperLogLogs) as values. Data is stored in memory for sub-millisecond access, with optional persistence to disk.
Data Structures
| Structure | Use Case | Commands |
|---|---|---|
| String | Cache, counters, locks | GET, SET, INCR, APPEND |
| Hash | Objects, user profiles | HGET, HSET, HGETALL, HMSET |
| List | Queues, recent items | LPUSH, RPUSH, LPOP, LRANGE |
| Set | Tags, unique items | SADD, SMEMBERS, SINTER, SUNION |
| Sorted Set | Leaderboards, priority queues | ZADD, ZRANGE, ZRANK, ZSCORE |
| Stream | Event sourcing, messaging | XADD, XREAD, XLEN, XRANGE |
| HyperLogLog | Cardinality estimation | PFADD, PFCOUNT |
| Bitmap | Feature flags, user activity | SETBIT, BITCOUNT, BITOP |
Redis Data Structure Usage
String (cache): SET user:123 '{"name":"Alice"}' EX 3600
Hash (object): HSET user:123 name "Alice" age 30 email "alice@example.com"
Sorted Set (leaderboard): ZADD leaderboard 100 "player1" 95 "player2" 87 "player3"
Stream (events): XADD orders * product "laptop" quantity 1 price 999
Persistence Models
DfRDB Persistence
RDB (Redis Database) takes point-in-time snapshots of the dataset at specified intervals. Snapshots are compact, fast to restore, and good for backups. However, data between snapshots is lost if Redis crashes.
DfAOF Persistence
AOF (Append-Only File) logs every write operation. It provides better durability than RDB because each write is logged. The file can be rewritten periodically to reduce size. AOF trades write performance for durability.
| Feature | RDB | AOF | Both |
|---|---|---|---|
| Durability | Point-in-time | Every write | Maximum |
| Performance | Minimal impact | Moderate impact | Moderate |
| Recovery speed | Fast | Slower | Fast |
| File size | Compact | Larger | Moderate |
For most production deployments, use both RDB and AOF. RDB provides fast backups and recovery; AOF provides better durability. Redis 4.0+ supports AOF rewrite with RDB-like snapshots in the AOF file.
Redis Clustering
Hash Slot Distribution
Hash Slot Assignment
Here,
- =Hash slot number (0-16383)
- =The Redis key
- =Total number of hash slots
Common Use Cases
| Use Case | Data Structure | Pattern |
|---|---|---|
| Caching | String | Cache-aside, TTL-based expiration |
| Session store | Hash | Per-user session data |
| Rate limiting | String + INCR | Fixed/sliding window |
| Leaderboard | Sorted Set | ZADD, ZREVRANGE |
| Queue | List | LPUSH + RPOP (FIFO) |
| Pub/Sub | Pub/Sub | Real-time messaging |
| Leader election | String + SET NX | Distributed locks |
Rate Limiting with Redis
Fixed window rate limiter (100 requests per minute):
INCR rate:{user_id}:{minute}
EXPIRE rate:{user_id}:{minute} 60
# Check limit
GET rate:{user_id}:{minute} <= 100 ? ALLOW : DENY
Sliding window (more accurate): Use sorted set with timestamps as scores, remove old entries, count remaining.
Practice Exercises
-
Data Structure Selection: For each use case, choose the optimal Redis data structure and justify your choice:
- Real-time chat messages (last 50 per room)
- User shopping cart
- Social media feed (last 100 posts per user)
- Real-time analytics counter
-
Cluster Design: Design a Redis cluster for a social media application with 10M users. How many nodes, shards, and replicas would you use?
-
Persistence Design: Your Redis instance stores critical session data. Design the persistence strategy that balances durability and performance.
-
Caching Strategy: Design a Redis caching strategy for an e-commerce product catalog with 1M products, 90% read-heavy workload, and 10-minute TTL. What cache eviction policy would you use?
Key Takeaways:
- Redis supports multiple data structures beyond simple key-value
- Single-threaded event loop provides predictable performance without locks
- RDB + AOF persistence balances durability and performance
- Redis Cluster uses hash slots for automatic sharding across nodes
- Common use cases: caching, sessions, rate limiting, leaderboards, queues
- Sub-millisecond latency makes Redis ideal for latency-critical paths
What to Learn Next
-> Kafka Deep Dive Event streaming, partitioning, and exactly-once semantics.
-> Cassandra Deep Dive Cassandra architecture, data modeling, and operational patterns.
-> Caching Strategies Cache-aside, write-through, write-back, and cache invalidation.
-> Distributed Cache Design Designing a distributed caching system.
-> Rate Limiting Token bucket, sliding window, and distributed rate limiting.
-> NoSQL Deep Dive Document, key-value, column-family, and graph databases.