C# (.NET) में कैशिंग: Redis और एप्लिकेशन को तेज़ करने के अन्य उपकरण
कैशिंग C# (.NET) में एप्लिकेशन के प्रदर्शन और स्केलेबिलिटी को बढ़ाने के सबसे प्रभावी तरीकों में से एक है। इस लेख में, हम बिल्ट-इन कैशिंग मैकेनिज़्म, Redis के साथ काम करने के लिए लोकप्रिय लाइब्रेरीज़, और वैकल्पिक समाधानों पर विस्तार से चर्चा करेंगे। आप सीखेंगे कि अपने कार्य के लिए सही उपकरण कैसे चुनें और सामान्य गलतियों से कैसे बचें।
.NET में बिल्ट-इन कैशिंग मैकेनिज़्म
.NET प्लेटफ़ॉर्म कैशिंग के लिए कई तैयार समाधान प्रदान करता है जो तीसरे पक्ष की निर्भरताओं को स्थापित किए बिना अधिकांश परिदृश्यों के लिए उपयुक्त हैं।
1. MemoryCache (System.Runtime.Caching)
प्रक्रिया मेमोरी में बिल्ट-इन कैश। सिंगल-थ्रेडेड एप्लिकेशन या कम लोड के लिए आदर्श। डेटा RAM में संग्रहीत होता है और संसाधनों की कमी होने पर स्वचालित रूप से हटा दिया जाता है।
using System.Runtime.Caching;
public class MemoryCacheService{ private readonly MemoryCache _cache = MemoryCache.Default;
public T GetOrSet<T>(string key, Func<T> factory, int expirationMinutes = 5) { var cached = _cache.Get(key); if (cached != null) return (T)cached;
var result = factory(); var policy = new CacheItemPolicy { AbsoluteExpiration = DateTimeOffset.UtcNow.AddMinutes(expirationMinutes) }; _cache.Set(key, result, policy); return result; }}2. IDistributedCache (Microsoft.Extensions.Caching)
वितरित कैशिंग के लिए एब्स्ट्रैक्शन। Redis, SQL Server, NCache और अन्य प्रदाताओं के बीच आसानी से स्विच करने की अनुमति देता है। माइक्रोसर्विसेज़ और क्लाउड एप्लिकेशन के लिए अनुशंसित।
using Microsoft.Extensions.Caching.Distributed;using System.Text.Json;
public class DistributedCacheService{ private readonly IDistributedCache _cache;
public DistributedCacheService(IDistributedCache cache) { _cache = cache; }
public async Task<T> GetOrSetAsync<T>(string key, Func<Task<T>> factory, int expirationMinutes = 10) { var cached = await _cache.GetStringAsync(key); if (cached != null) return JsonSerializer.Deserialize<T>(cached);
var result = await factory(); var options = new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(expirationMinutes) }; await _cache.SetStringAsync(key, JsonSerializer.Serialize(result), options); return result; }}Redis: वितरित कैशिंग का राजा
Redis एक उच्च-प्रदर्शन वाला in-memory डेटा स्टोर है जो स्ट्रिंग्स, लिस्ट्स, हैशेज़, सेट्स और अन्य संरचनाओं का समर्थन करता है। .NET के लिए मुख्य लाइब्रेरी StackExchange.Redis है।
StackExchange.Redis की स्थापना और कॉन्फ़िगरेशन
NuGet के माध्यम से पैकेज स्थापित करें:
dotnet add package StackExchange.Redisकनेक्शन और बुनियादी संचालन का उदाहरण:
using StackExchange.Redis;
public class RedisCacheService{ private readonly ConnectionMultiplexer _redis; private readonly IDatabase _db;
public RedisCacheService(string connectionString) { _redis = ConnectionMultiplexer.Connect(connectionString); _db = _redis.GetDatabase(); }
public async Task SetAsync(string key, string value, int expirationMinutes = 5) { await _db.StringSetAsync(key, value, TimeSpan.FromMinutes(expirationMinutes)); }
public async Task<string> GetAsync(string key) { return await _db.StringGetAsync(key); }}Redis की उन्नत सुविधाएँ
- Pub/Sub — सेवाओं के बीच सूचनाएँ
- Sorted Sets — रैंकिंग और लीडरबोर्ड