StackExchange.Redis C# (.NET): पूरी गाइड, उदाहरण और उपयोग

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

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

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

StackExchange.Redis C# (.NET): पूरी गाइड और उदाहरण

1. यह क्या है और क्यों ज़रूरी है?

StackExchange.Redis एक हाई-परफॉर्मेंस, एसिंक्रोनस Redis क्लाइंट है, जिसे StackOverflow टीम ने बनाया है। यह .NET इकोसिस्टम में Redis के साथ काम करने के लिए डी-फैक्टो स्टैंडर्ड लाइब्रेरी है। यह .NET Framework 4.6+ और .NET Core/.NET 5+ के लिए उपलब्ध है।

इसकी ज़रूरत क्यों है? Redis एक in-memory डेटा स्टोर है, जिसे आमतौर पर कैश, मैसेज ब्रोकर (Pub/Sub), टास्क क्यू या हाई-परफॉर्मेंस NoSQL डेटाबेस के रूप में इस्तेमाल किया जाता है। StackExchange.Redis इन सभी सुविधाओं के लिए आसान API प्रदान करता है: स्ट्रिंग्स, हैशेस, लिस्ट्स, सेट्स, ट्रांज़ैक्शन, Lua स्क्रिप्ट्स, डेटा स्ट्रीमिंग आदि। इस लाइब्रेरी के बिना, आपको Redis प्रोटोकॉल (RESP) और सॉकेट्स के लिए लो-लेवल कोड लिखना पड़ता।

इस लाइब्रेरी की सबसे बड़ी खासियत है इसकी एसिंक्रोनस और मल्टीथ्रेडेड डिज़ाइन। यह ConnectionMultiplexer का उपयोग करती है — एक साझा ऑब्जेक्ट जो Redis सर्वर से सभी कनेक्शनों को मैनेज करता है। इससे सॉकेट्स का कुशल उपयोग होता है और कई कनेक्शन बनाने की ज़रूरत नहीं पड़ती। यह Redis Cluster, Sentinel और रेप्लिकेशन को भी पूरी तरह सपोर्ट करती है।

2. इंस्टॉलेशन

इंस्टॉलेशन NuGet Package Manager के ज़रिए होता है। Package Manager Console या .NET CLI टर्मिनल में नीचे दिए गए कमांड में से कोई एक चलाएँ:

// .NET CLI के ज़रिए
dotnet add package StackExchange.Redis

// Package Manager Console के ज़रिए
Install-Package StackExchange.Redis

इंस्टॉल करने के बाद अपने कोड में using डायरेक्टिव जोड़ें:

using StackExchange.Redis;

3. तुरंत शुरुआत — एक छोटा काम का उदाहरण

नीचे एक छोटा उदाहरण दिया गया है जो लोकल Redis सर्वर से कनेक्ट होता है, एक स्ट्रिंग सेव करता है और उसे वापस पढ़ता है:

using StackExchange.Redis;

// मल्टीप्लेक्सर बनाएँ (सभी ऑपरेशनों का एंट्री पॉइंट)
// "localhost:6379" को अपने Redis सर्वर के एड्रेस से बदलें
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");

// डेटाबेस प्राप्त करें (डिफ़ॉल्ट db 0)
IDatabase db = redis.GetDatabase();

// वैल्यू सेव करें
bool setResult = db.StringSet("mykey", "Hello, Redis!");
Console.WriteLine($"Set result: {setResult}");

// वैल्यू पढ़ें
RedisValue value = db.StringGet("mykey");
Console.WriteLine($"Get result: {value}");

// कनेक्शन बंद करें (आमतौर पर using का उपयोग करने पर ज़रूरी नहीं)
redis.Close();

ज़रूरी बात: ConnectionMultiplexer एक लंबे समय तक चलने वाला ऑब्जेक्ट है। इसे एप्लिकेशन के जीवनकाल में एक बार बनाएँ (जैसे DI कंटेनर में सिंगलटन के रूप में)। हर रिक्वेस्ट के लिए नया मल्टीप्लेक्सर न बनाएँ!

4. मुख्य तरीके/फंक्शन/क्लासेस

4.1. ConnectionMultiplexer.Connect()

सिग्नेचर: public static ConnectionMultiplexer Connect(string configuration)

यह क्या करता है: एक नया ConnectionMultiplexer इंस्टेंस बनाता और लौटाता है, जो Redis से सभी कनेक्शनों को मैनेज करता है। यह कॉन्फ़िगरेशन स्ट्रिंग (एड्रेस, पोर्ट, पासवर्ड, टाइमआउट आदि) लेता है।

उदाहरण:

var redis = ConnectionMultiplexer.Connect("myredisserver.com:6379,password=secret,connectTimeout=5000");

4.2. IDatabase.StringSet()

सिग्नेचर: bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)

यह क्या करता है: दिए गए की के लिए वैल्यू सेट करता है। इसमें वैकल्पिक एक्सपायरी टाइम (expiry) और सेट करने की शर्त (जैसे की मौजूद हो या न हो) भी दी जा सकती है।

उदाहरण:

IDatabase db = redis.GetDatabase();
db.S                    

अनुशंसाएँ