.NET › Caching (In-Memory, Distributed & Redis)
How does Redis's data structure support (beyond simple key-value) enable caching patterns not possible with IMemoryCache?
AdvancedAnswer
Redis natively supports rich data structures -- sorted sets (for leaderboards or rate limiting windows), hashes (for efficiently updating individual fields of a cached object without rewriting the whole entry), sets (for fast membership/intersection operations), and pub/sub (for cache invalidation broadcast across multiple app instances) -- letting you implement caching patterns like 'top 10 most-viewed products, updated incrementally' that would require significant custom logic with a simple key-value cache like IMemoryCache.
// Using IConnectionMultiplexer directly for Redis-specific features
var db = _redis.GetDatabase();
await db.SortedSetIncrementAsync("product-views", productId.ToString(), 1);
var topProducts = await db.SortedSetRangeByScoreWithScoresAsync("product-views", order: Order.Descending, take: 10);Real-world example A real-time 'trending products' feature uses a Redis sorted set incremented on every product view, letting the top-10 leaderboard be queried instantly without any separate aggregation job, a pattern that's awkward to implement with plain key-value caching.