Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

बिजली की तेजी से प्रदर्शन के लिए Redis का उपयोग करके ASP.NET कोर में मास्टर वितरित कैशिंग

<पी> बिजली की तेजी से प्रदर्शन के लिए Redis का उपयोग करके ASP.NET कोर में मास्टर वितरित कैशिंग

परिचय

<पी> जब आप 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:कैश-असाइड पैटर्न लागू करें

<पी> कैशिंग का उपयोग करने का सबसे आम तरीका कैश-एसाइड पैटर्न है।

<पी> इसका मतलब है:

  1. <पी> सबसे पहले कैश जांचें

  2. <पी> यदि डेटा मौजूद है → इसे वापस लौटाएँ

  3. <पी> यदि नहीं → डेटाबेस से प्राप्त करें और कैश में संग्रहित करें

<पी> उदाहरणः

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 का उपयोग करने के लाभ

<पी> रेडिस का उपयोग करने से कई लाभ मिलते हैं:

  • <पी> तेज़ एप्लिकेशन प्रदर्शन

  • <पी> डेटाबेस लोड कम हुआ

  • <पी> बेहतर मापनीयता

  • <पी> बेहतर उपयोगकर्ता अनुभव

<पी> यह उच्च-ट्रैफ़िक अनुप्रयोगों में विशेष रूप से उपयोगी है।

सारांश

<पी> ASP.NET कोर में रेडिस के साथ वितरित कैशिंग एप्लिकेशन प्रदर्शन को बेहतर बनाने का एक सरल लेकिन शक्तिशाली तरीका है। डेटाबेस को बार-बार कॉल करने के बजाय, आप अक्सर उपयोग किए जाने वाले डेटा को Redis में संग्रहीत करते हैं और आवश्यकता पड़ने पर इसे तुरंत पुनर्प्राप्त करते हैं। चरण-दर-चरण दृष्टिकोण का पालन करके, कैश-एसाइड जैसे पैटर्न का उपयोग करके और सर्वोत्तम प्रथाओं को लागू करके, आप तेज़, स्केलेबल और कुशल एप्लिकेशन बना सकते हैं। छोटी शुरुआत करें, कैशिंग को वहां लागू करें जहां यह सबसे ज्यादा मायने रखता है, और बेहतर प्रदर्शन के लिए धीरे-धीरे अपने सिस्टम को अनुकूलित करें।


  1. Matplotlib में नेस्टेड पाई चार्ट कैसे प्लॉट करें? Matplotlib में नेस्टेड पाई चार्ट कैसे प्लॉट करें?

    Matplotlib में नेस्टेड पाई चार्ट बनाने के लिए, हम निम्नलिखित कदम उठा सकते हैं - आकृति का आकार सेट करें और सबप्लॉट के बीच और आसपास पैडिंग समायोजित करें। एक आकृति और सबप्लॉट का एक सेट बनाएं। एक चर प्रारंभ करें आकार , vals . बनाएं , सीमैप , बाहरी_रंग , आंतरिक_रंग numpy का उपयोग कर डेटा। पाई () का प्र

  1. सर्वर रहित आर्किटेक्चर:एडब्ल्यूएस लैम्ब्डा, अपस्टैश रेडिस और स्केलेबल, लागत प्रभावी ऐप्स के लिए जाएं सर्वर रहित आर्किटेक्चर:एडब्ल्यूएस लैम्ब्डा, अपस्टैश रेडिस और स्केलेबल, लागत प्रभावी ऐप्स के लिए जाएं

    परिचय सर्वर रहित कंप्यूट प्लेटफ़ॉर्म अद्भुत हैं, लेकिन सर्वर रहित डेटाबेस के बिना वे बहुत सीमित हैं। जब मैं अपने आगामी पाठ्यक्रम, द एलिमेंट्स ऑफ सीआई/सीडी के लिए मंच का निर्माण कर रहा था, तो मैं एक सर्वर रहित डेटाबेस चाहता था क्योंकि मैंने कुछ चीजों के लिए अपने सर्वर के रूप में एडब्ल्यूएस लैम्ब्डा

  1. एंड्रॉइड ऐप में नए संपर्क कैसे जोड़ें? एंड्रॉइड ऐप में नए संपर्क कैसे जोड़ें?

    यह उदाहरण दर्शाता है कि Android ऐप में नए संपर्क कैसे जोड़ें। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें चरण 3 - निम्न कोड को src/MainA