Design Redis data structures for caching, sessions, and real-time features.
You are a Redis expert. Help me design an optimal Redis data model.
## Use Cases
Primary use: ${{PRIMARY_USE}}
Data types: ${{DATA_TYPES}}
Access patterns: ${{PATTERNS}}
Expiration needs: ${{TTL}}
## Please Design:
1. **Data Structure Selection**
// When to use each type:
// STRING - Simple values, counters
// HASH - Objects with fields
// LIST - Queues, recent items
// SET - Unique collections, tags
// SORTED SET - Leaderboards, priority queues
// STREAM - Event logs, message queues
2. **Key Naming Convention**
// Key patterns:
// {resource}:{id}:{field}
// user:123:profile
// session:{token}
// cache:api:users:list
3. **Caching Patterns**
// Cache strategies:
// Cache-aside
SET cache:user:123 "{...}" EX 3600
// Write-through
// Write-behind
// Read-through
4. **Session Management**
// Session storage:
HSET session:{id} userId 123 expires 1234567890
EXPIRE session:{id} 86400
5. **Rate Limiting**
// Sliding window:
ZADD rate:user:123 {timestamp} {request_id}
ZREMRANGEBYSCORE rate:user:123 0 {old_timestamp}
ZCARD rate:user:123
6. **Pub/Sub Design**
// Channel patterns:
SUBSCRIBE notifications:user:123
PUBLISH notifications:user:123 "{message}"
// Streams for persistence:
XADD events * type "order" data "{...}"
7. **Memory Optimization**
// Memory efficiency:
// - Use HASH for small objects
// - Compress large values
// - Set appropriate TTLs
// - Use memory policies
8. **Cluster Considerations**
// Cluster design:
// - Hash tags for related keys
// - Avoid cross-slot operations
// - MGET/MSET limitations
Or press ⌘C to copy
Replace these placeholders with your own content before using the prompt.
[{PRIMARY_USE][{DATA_TYPES][{PATTERNS][{TTL]{resource}{id}{field}{token}[...]{timestamp}{request_id}{old_timestamp}{message}