परिचय
<पी> जब आप ASP.NET कोर एप्लिकेशन बनाते हैं, तो सबसे बड़ी चुनौतियों में से एक प्रदर्शन है। जैसे-जैसे आपका एप्लिकेशन बढ़ता है और अधिक उपयोगकर्ता इसका उपयोग करना शुरू करते हैं, आपका डेटाबेस एक ही डेटा के लिए बार-बार हिट होता है। यह आपके एप्लिकेशन को धीमा कर देता है और सर्वर लोड बढ़ा देता है। <पी> यहीं पर Redis के साथ वितरित कैशिंग मदद करती है। <पी> हर बार डेटाबेस को कॉल करने के बजाय, आप अक्सर उपयोग किए जाने वाले डेटा को रेडिस जैसे तेज़ इन-मेमोरी सिस्टम में संग्रहीत करते हैं। अगली बार जब कोई उसी डेटा का अनुरोध करता है, तो उसे डेटाबेस के बजाय कैश से तुरंत वापस कर दिया जाता है। <पी> इस गाइड में, आप चरण-दर-चरण सीखेंगे कि सरल और व्यावहारिक शब्दों में ASP.NET कोर में Redis वितरित कैशिंग का उपयोग कैसे करें।वितरित कैशिंग क्या है?
<पी> वितरित कैशिंग का अर्थ है आपके कैश्ड डेटा को आपके एप्लिकेशन के बाहर संग्रहीत करना, आमतौर पर रेडिस जैसी एक अलग सेवा में। <पी> सामान्य (इन-मेमोरी) कैश में, डेटा को एक सर्वर के अंदर संग्रहीत किया जाता है। यदि आपका एप्लिकेशन एकाधिक सर्वर पर चलता है, तो प्रत्येक सर्वर का अपना कैश होगा, जो असंगतता का कारण बन सकता है। <पी> लेकिन वितरित कैशिंग में:- <पी> सभी सर्वर समान कैश साझा करते हैं
- <पी> संपूर्ण एप्लिकेशन में डेटा एक समान रहता है
- <पी> यह स्केलेबल वातावरण में अच्छा काम करता है
रेडिस क्या है?
<पी> रेडिस एक बहुत तेज़, इन-मेमोरी डेटा स्टोर है जिसका व्यापक रूप से कैशिंग के लिए उपयोग किया जाता है। <पी> रेडिस को एक सुपर-फास्ट डिक्शनरी के रूप में सोचें जहां:- <पी> आप एक कुंजी का उपयोग करके डेटा संग्रहीत करते हैं
- <पी> आप उसी कुंजी का उपयोग करके डेटा पुनर्प्राप्त करते हैं
- <पी> यह अत्यंत तेज़ है क्योंकि यह डेटा को मेमोरी में संग्रहीत करता है
- <पी> यह सरल कुंजी-मूल्य भंडारण का समर्थन करता है
- <पी> ASP.NET Core के साथ एकीकृत करना आसान है
- <पी> यह स्केलेबल और क्लाउड-आधारित अनुप्रयोगों के लिए बहुत अच्छा काम करता है
आवश्यकताएँ
<पी> शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित तैयार है:- <पी> आपके सिस्टम पर .NET SDK स्थापित है
- <पी> एक कार्यशील ASP.NET कोर प्रोजेक्ट
- <पी> Redis स्थानीय रूप से स्थापित है या क्लाउड Redis सेवा तक पहुंच है
- <पी> ASP.NET कोर में नियंत्रकों और सेवाओं की बुनियादी समझ
चरण 1:आवश्यक NuGet पैकेज स्थापित करें
<पी> सबसे पहले, आपको Redis कैशिंग पैकेज इंस्टॉल करना होगा। <पी> निम्न आदेश चलाएँ:dotnet add package Microsoft.Extensions.Caching.StackExchangeRedis
<पी> यह पैकेज आपके ASP.NET कोर एप्लिकेशन को Redis से जोड़ता है और वितरित कैशिंग समर्थन को सक्षम करता है। चरण 2:Redis को ASP.NET कोर में कॉन्फ़िगर करें
<पी> इसके बाद, आपको अपने एप्लिकेशन को यह बताना होगा कि Redis से कैसे कनेक्ट किया जाए। <पी> अपनाProgram.cs खोलें फ़ाइल करें और निम्नलिखित कॉन्फ़िगरेशन जोड़ें: builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379";
options.InstanceName = "SampleApp_";
});
<पी> सरल शब्दों में स्पष्टीकरण: - <पी>
localhost:6379→ यह वह पता है जहां Redis चल रहा है - <पी>
InstanceName→ सभी कैश कुंजियों में एक उपसर्ग जोड़ा गया (डेटा को व्यवस्थित करने में मदद करता है)
चरण 3:IDistributedCache सेवा इंजेक्ट करें
<पी> ASP.NET कोर एक अंतर्निहित इंटरफ़ेस प्रदान करता है जिसेIDistributedCache कहा जाता है रेडिस के साथ काम करने के लिए। <पी> आपको इसे अपनी सेवा या नियंत्रक में इंजेक्ट करना होगा। public class ProductService
{
private readonly IDistributedCache _cache;
public ProductService(IDistributedCache cache)
{
_cache = cache;
}
}
<पी> सरल शब्दों में, यह आपकी कक्षा को रेडिस से बात करने की अनुमति देता है। चरण 4:रेडिस कैश में डेटा संग्रहीत करें
<पी> Redis में डेटा संग्रहीत करने के लिए, आपSetStringAsync का उपयोग करते हैं विधि. public async Task SetCacheDataAsync(string key, string value)
{
var options = new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
};
await _cache.SetStringAsync(key, value, options);
}
<पी> यहाँ क्या हो रहा है: - <पी> आप एक अद्वितीय कुंजी का उपयोग करके डेटा सहेज रहे हैं
- <पी> आप समाप्ति समय (10 मिनट) निर्धारित कर रहे हैं
- <पी> पुराने डेटा को रोकता है
- <पी> कैश को साफ़ रखता है
- <पी> स्मृति सहेजता है
चरण 5:कैश से डेटा पुनर्प्राप्त करें
<पी> रेडिस से डेटा प्राप्त करने के लिए, आप इसका उपयोग करते हैं:public async Task<string> GetCacheDataAsync(string key)
{
return await _cache.GetStringAsync(key);
}
<पी> यदि डेटा मौजूद है, तो यह तुरंत वापस आ जाता है। यदि नहीं, तो यह शून्य हो जाता है। <पी> यह डेटाबेस को कॉल करने की तुलना में बहुत तेज़ है।
चरण 6:कैश-असाइड पैटर्न लागू करें
<पी> कैशिंग का उपयोग करने का सबसे आम तरीका कैश-एसाइड पैटर्न है। <पी> इसका मतलब है:- <पी> सबसे पहले कैश जांचें
- <पी> यदि डेटा मौजूद है → इसे वापस लौटाएँ
- <पी> यदि नहीं → डेटाबेस से प्राप्त करें और कैश में संग्रहित करें
public async Task<string> GetProductAsync(string productId)
{
string cacheKey = $"product_{productId}";
var cachedData = await _cache.GetStringAsync(cacheKey);
if (!string.IsNullOrEmpty(cachedData))
{
return cachedData;
}
var productData = "Product from Database";
await _cache.SetStringAsync(cacheKey, productData, new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5)
});
return productData;
}
<पी> यह दृष्टिकोण: - <पी> डेटाबेस कॉल कम कर देता है
- <पी> प्रतिक्रिया समय में सुधार करता है
- <पी> आवश्यकता पड़ने पर स्वचालित रूप से कैश भरता है
चरण 7:जटिल वस्तुओं के साथ कार्य करना
<पी> Redis डेटा को स्ट्रिंग्स के रूप में संग्रहीत करता है, इसलिए ऑब्जेक्ट के लिए, आपको उन्हें JSON में परिवर्तित करना होगा।public async Task SetObjectAsync<T>(string key, T data)
{
var jsonData = JsonSerializer.Serialize(data);
await _cache.SetStringAsync(key, jsonData);
}
public async Task<T> GetObjectAsync<T>(string key)
{
var jsonData = await _cache.GetStringAsync(key);
return jsonData == null ? default : JsonSerializer.Deserialize<T>(jsonData);
}
<पी> सरल शब्दों में: - <पी> ऑब्जेक्ट → JSON → स्टोर को Redis में बदलें
- <पी> JSON पुनर्प्राप्त करें → वापस ऑब्जेक्ट में बदलें
चरण 8:कैश से डेटा हटाएँ
<पी> कभी-कभी आपको पुराना या गलत कैश डेटा हटाने की आवश्यकता होती है।await _cache.RemoveAsync("product_1");
<पी> यह तब उपयोगी होता है जब: - <पी> डेटा को डेटाबेस में अपडेट किया जाता है
- <पी> कैश अमान्य हो जाता है
चरण 9:रेडिस कैशिंग के लिए सर्वोत्तम अभ्यास
<पी> रेडिस का प्रभावी ढंग से उपयोग करने के लिए, इन सरल प्रथाओं का पालन करें:- <पी> स्पष्ट और अद्वितीय कैश कुंजियों का उपयोग करें
- <पी> हमेशा समाप्ति समय निर्धारित करें
- <पी> संवेदनशील डेटा को कैश न करें
- <पी> बहुत बड़ी वस्तुओं को संग्रहित करने से बचें
- <पी> कैश उपयोग और प्रदर्शन की निगरानी करें
चरण 10:सामान्य उपयोग के मामले
<पी> रेडिस कैशिंग का उपयोग आमतौर पर इसके लिए किया जाता है:- <पी> एपीआई प्रतिक्रिया कैशिंग
- <पी> उत्पाद सूची
- <पी> उपयोगकर्ता सत्र
- <पी> बारंबार एक्सेस किया गया डेटा
- <पी> डैशबोर्ड डेटा
ASP.NET कोर में Redis का उपयोग करने के लाभ
<पी> रेडिस का उपयोग करने से कई लाभ मिलते हैं:- <पी> तेज़ एप्लिकेशन प्रदर्शन
- <पी> डेटाबेस लोड कम हुआ
- <पी> बेहतर मापनीयता
- <पी> बेहतर उपयोगकर्ता अनुभव