C# (.NET) में कैशिंग: Redis, MemoryCache और अन्य समाधान

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में कैशिंग: Redis, MemoryCache और विकल्प

\n

कैशिंग C# (.NET) अनुप्रयोगों के प्रदर्शन को बढ़ाने के लिए प्रमुख उपकरणों में से एक है। यह प्रतिक्रिया समय को कम करने, डेटाबेस पर लोड को कम करने और बुनियादी ढांचे की लागत को कम करने में मदद करता है। इस लेख में, हम .NET के अंतर्निहित तंत्र, Redis पर आधारित लोकप्रिय कार्यान्वयन, साथ ही NCache और Couchbase जैसे वैकल्पिक समाधानों का विश्लेषण करेंगे।

\n\n

1. अंतर्निहित कैशिंग: MemoryCache

\n

MemoryCache (नेमस्पेस Microsoft.Extensions.Caching.Memory) एक सरल और तेज़ कैश है जो एक प्रक्रिया की RAM में डेटा संग्रहीत करता है। यह सिंगल-थ्रेडेड अनुप्रयोगों या एक इंस्टेंस वाले वेब सर्वर के लिए आदर्श है।

\n\n

स्थापना और कनेक्शन

\n
dotnet add package Microsoft.Extensions.Caching.Memory
\n\n

बुनियादी उपयोग का उदाहरण

\n
using Microsoft.Extensions.Caching.Memory;\n\npublic class DataService\n{\n    private readonly IMemoryCache _cache;\n    private readonly TimeSpan _cacheDuration = TimeSpan.FromMinutes(5);\n\n    public DataService(IMemoryCache cache) => _cache = cache;\n\n    public async Task<string> GetDataAsync(string key)\n    {\n        if (!_cache.TryGetValue(key, out string cachedData))\n        {\n            cachedData = await FetchFromDatabaseAsync(key);\n            _cache.Set(key, cachedData, new MemoryCacheEntryOptions\n            {\n                AbsoluteExpirationRelativeToNow = _cacheDuration\n            });\n        }\n        return cachedData;\n    }\n}
\n\n

लाभ और हानियाँ

\n
    \n
  • + सरलता, शून्य नेटवर्क विलंबता।
  • \n
  • + समाप्ति समर्थन (निरपेक्ष/स्लाइडिंग) अंतर्निहित है।
  • \n
  • - कई सर्वरों पर स्केलिंग करने पर काम नहीं करता।
  • \n
  • - एप्लिकेशन पुनरारंभ होने पर कैश साफ़ हो जाता है।
  • \n
\n\n

2. वितरित कैशिंग: Redis

\n

Redis .NET इकोसिस्टम में वितरित कैशिंग के लिए सबसे लोकप्रिय विकल्प है। यह एक अलग सेवा के रूप में काम करता है, जो एप्लिकेशन के सभी इंस्टेंस के लिए उपलब्ध है। .NET में IDistributedCache एब्स्ट्रैक्शन का उपयोग किया जाता है।

\n\n

पैकेज स्थापना

\n
dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis
\n\n

Program.cs में कॉन्फ़िगरेशन

\n
builder.Services.AddStackExchangeRedisCache(options =>\n{\n    options.Configuration = "localhost:6379";\n    options.InstanceName = "MyAppCache";\n});
\n\n

IDistributedCache के साथ काम करने का उदाहरण

\n
public class RedisCacheService\n{\n    private readonly IDistributedCache _cache;\n\n    public RedisCacheService(IDistributedCache cache) => _cache = cache;\n\n    public async Task SetAsync(string key, byte[] data, int minutes = 10)\n    {\n        await _cache.SetAsync(key, data, new DistributedCacheEntryOptions\n        {\n            AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(minutes)\n        });\n    }\n\n    public async Task<byte[]> GetAsync(string key)\n    {\n        return await _cache.GetAsync(key);\n    }\n}
\n\n

Redis की उन्नत क्षमताएँ

\n
    \n
  • ऑब्जेक्ट सीरियलाइज़ेशन: System.Text.Json या Newtonsoft.Json का उपयोग करें।
  • \n
  • टैग द्वारा इनवैलिडेशन: तृतीय-पक्ष लाइब्रेरीज़ (जैसे, EasyCaching.Redis) रिकॉर्ड को समूहित करने की अनुमति देती हैं।
  • \n
  • Pub/Sub: कैश परिवर्तनों की सूचनाओं के लिए।
  • \n
\n\n

3. Redis के विकल्प

\n\n

3.1 NCache

\n

NCache एक वाणिज्यिक समाधान है (मुफ़्त संस्करण उपलब्ध है) जो .NET का समर्थन करता है। यह उन्नत क्षमताएँ प्रदान करता है: नोड्स के बीच सिंक्रोनाइज़ेशन, कैश के लिए SQL-जैसी क्वेरी, ASP.NET सत्र कैशिंग।

\n
    \n
  • + IDist

अनुशंसाएँ