Why Redis?
Redis provides significant benefits for the Basket service:- In-Memory Speed: Sub-millisecond response times for cart operations
- Distributed Cache: Shared across multiple service instances
- Session Storage: Natural fit for transient shopping cart data
- Scalability: Handle high-frequency read/write operations
- Persistence Options: Configure durability based on requirements
Configuration
Connection String
src/Services/Basket/Basket.API/appsettings.json
Service Registration
src/Services/Basket/Basket.API/Program.cs
- StackExchange.Redis: Microsoft’s recommended Redis client
- Decorator Pattern: Adds caching transparently over base repository
- Optional Prefix: Use
InstanceNameto namespace keys
Cached Repository Implementation
Cache-Aside Pattern
src/Services/Basket/Basket.API/Data/CachedBasketRepository.cs
- Read: Check cache → Cache miss → Read DB → Update cache
- Write: Update DB → Update cache
- Delete: Delete from DB → Remove from cache
Base Repository (Database)
src/Services/Basket/Basket.API/Data/BasketRepository.cs
Redis Operations
IDistributedCache Interface
The ASP.NET CoreIDistributedCache interface provides:
String Extensions
For convenience, use string extensions:Cache Expiration Strategies
Sliding Expiration
Extends expiration on each access:Absolute Expiration
Expires at specific time:Combined Expiration
Advanced Usage
Direct StackExchange.Redis
For advanced scenarios, injectIConnectionMultiplexer:
Docker Compose Setup
Health Checks
/health endpoint.
Monitoring
Redis CLI
Application Insights
For production monitoring:Performance Best Practices
1. Use Binary Serialization
For large objects, use binary serialization:2. Batch Operations
3. Connection Pooling
StackExchange.Redis automatically pools connections. ReuseIConnectionMultiplexer:
4. Key Naming Convention
Troubleshooting
Connection Issues
Clear All Cache
View Cache Contents
Performance Issues
Production Considerations
High Availability
For production, use Redis Cluster or Azure Cache for Redis:Eviction Policies
Configure Redis eviction:Persistence
Choose persistence strategy:Related Resources
PostgreSQL Setup
Configure Marten document storage
StackExchange.Redis
Official Redis client documentation
