Redis
Redis (Remote Dictionary Server) is an in-memory data structure store, used as a database, cache, and message broker. It is incredibly fast.
When to Use
- Caching: The #1 use case. Cache HTML, JSON, or DB results.
- Session Store: User sessions (speed + automatic expiry).
- Queues: Simple background job queues using Lists (
LPUSH/RPOP).
- Real-time: Leaderboards, Counting, Pub/Sub.
Quick Start
# Set a value with 10 second expiry
SET session:123 "active" EX 10
# Increment a counter atomically
INCR page:views
# Store a hash (object)
HSET user:100 name "Jeevan" role "admin"
Core Concepts
Single Threaded
Redis uses a main single thread. Requests are processed sequentially, atomic by design. (Though I/O threading runs in background).
Persistence (RDB vs AOF)
- RDB: Snapshots every X minutes. Fast restart, potential data loss.
- AOF: Logs every write. Slower, better durability.
Data Structures
Strings, Lists, Sets, Sorted Sets (ZSET), Hashes, Bitmaps, HyperLogLogs, Geospatial, Streams.
Best Practices (2025)
Do:
- Use Redis Stack: Includes extensions like RediSearch (
FT.SEARCH), RedisJSON, and Bloom Filters.
- Use Connection Pooling: Opening connections is expensive.
- Set
maxmemory-policy: Configure what happens when RAM is full (e.g., allkeys-lru to delete old data).
Don't:
- Don't use
KEYS *: It blocks the server scanning all keys. Use SCAN.
- Don't store huge values: Redis is for small, fast data.
References
1---2name: redis3description: Redis in-memory cache, pub/sub, streams, and data structures. Use for caching and real-time data.4---56# Redis78Redis (Remote Dictionary Server) is an in-memory data structure store, used as a database, cache, and message broker. It is incredibly fast.910## When to Use1112- **Caching**: The #1 use case. Cache HTML, JSON, or DB results.13- **Session Store**: User sessions (speed + automatic expiry).14- **Queues**: Simple background job queues using Lists (`LPUSH`/`RPOP`).15- **Real-time**: Leaderboards, Counting, Pub/Sub.1617## Quick Start1819```bash20# Set a value with 10 second expiry21SET session:123 "active" EX 102223# Increment a counter atomically24INCR page:views2526# Store a hash (object)27HSET user:100 name "Jeevan" role "admin"28```2930## Core Concepts3132### Single Threaded3334Redis uses a main single thread. Requests are processed sequentially, atomic by design. (Though I/O threading runs in background).3536### Persistence (RDB vs AOF)3738- **RDB**: Snapshots every X minutes. Fast restart, potential data loss.39- **AOF**: Logs every write. Slower, better durability.4041### Data Structures4243Strings, Lists, Sets, Sorted Sets (`ZSET`), Hashes, Bitmaps, HyperLogLogs, Geospatial, Streams.4445## Best Practices (2025)4647**Do**:4849- **Use Redis Stack**: Includes extensions like RediSearch (`FT.SEARCH`), RedisJSON, and Bloom Filters.50- **Use Connection Pooling**: Opening connections is expensive.51- **Set `maxmemory-policy`**: Configure what happens when RAM is full (e.g., `allkeys-lru` to delete old data).5253**Don't**:5455- **Don't use `KEYS *`**: It blocks the server scanning all keys. Use `SCAN`.56- **Don't store huge values**: Redis is for small, fast data.5758## References5960- [Redis Documentation](https://redis.io/docs/)