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
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 |
Persistence Models
| 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 |
Redis Clustering
Hash Slot Distribution
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 |
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?
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.