C# (.NET) के लिए Redis क्लाइंट: StackExchange.Redis
.NET प्लेटफ़ॉर्म पर आधुनिक डेवलपमेंट में, अक्सर तेज़ डेटा कैशिंग, मैसेज क्यू संगठन या सत्र प्रबंधन की आवश्यकता होती है। इन कार्यों के लिए सबसे अच्छे समाधानों में से एक Redis का उपयोग है — एक उच्च-प्रदर्शन "की-वैल्यू" डेटा स्टोर। C# (.NET) से Redis के साथ इंटरैक्ट करने के लिए सबसे लोकप्रिय और विश्वसनीय लाइब्रेरी StackExchange.Redis है।
StackExchange.Redis क्या है?
StackExchange.Redis एक ओपन-सोर्स क्लाइंट लाइब्रेरी है, जिसे Stack Overflow कंपनी द्वारा विकसित किया गया है। यह Redis के साथ काम करने के लिए सुविधाओं का एक पूरा सेट प्रदान करती है: सरल GET/SET ऑपरेशन से लेकर प्रकाशन/सदस्यता (Pub/Sub), ट्रांज़ैक्शन और Lua-स्क्रिप्ट के साथ जटिल परिदृश्यों तक। लाइब्रेरी मल्टी-थ्रेडेड अनुप्रयोगों के लिए अनुकूलित है और एसिंक्रोनस ऑपरेशन का समर्थन करती है, जो इसे C# पर उच्च-लोड सेवाओं के लिए एक आदर्श विकल्प बनाती है।
इंस्टॉलेशन
लाइब्रेरी को NuGet Package Manager के माध्यम से इंस्टॉल किया जा सकता है। पैकेज मैनेजर कंसोल में निम्न कमांड चलाएँ:
Install-Package StackExchange.Redisया .NET CLI के माध्यम से:
dotnet add package StackExchange.Redisइंस्टॉलेशन के बाद, आप कनेक्शन स्ट्रिंग का उपयोग करके Redis सर्वर से कनेक्ट कर सकते हैं:
using StackExchange.Redis;
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");IDatabase db = redis.GetDatabase();मुख्य विशेषताएँ और कोड उदाहरण
1. कीज़ के साथ बुनियादी ऑपरेशन
सबसे सामान्य परिदृश्य — मानों को सहेजना और प्राप्त करना। स्ट्रिंग के साथ काम करने का उदाहरण:
// डेटा लिखनाdb.StringSet("user:1:name", "Алексей");db.StringSet("user:1:email", "alex@example.com");
// डेटा पढ़नाstring name = db.StringGet("user:1:name");string email = db.StringGet("user:1:email");
Console.WriteLine($"नाम: {name}, ईमेल: {email}");2. हैश के साथ कार्य
Redis "हैश" डेटा संरचना का समर्थन करता है, जो ऑब्जेक्ट को संग्रहीत करने के लिए सुविधाजनक है:
// हैश लिखनाHashEntry[] user = new HashEntry[]{ new HashEntry("name", "Мария"), new HashEntry("age", 28), new HashEntry("city", "Москва")};db.HashSet("user:2", user);
// सभी फ़ील्ड पढ़नाHashEntry[] loadedUser = db.HashGetAll("user:2");foreach (var entry in loadedUser){ Console.WriteLine($"{entry.Name}: {entry.Value}");}3. जीवनकाल के साथ कैशिंग
Redis की प्रमुख विशेषताओं में से एक — पुराने डेटा का स्वचालित निष्कासन। की के लिए TTL (Time To Live) सेट करें:
// डेटा को 10 मिनट के लिए कैश करेंdb.StringSet("cache:weather", "धूप, +22°C", TimeSpan.FromMinutes(10));
// जीवनकाल जाँचेंTimeSpan? ttl = db.KeyTimeToLive("cache:weather");Console.WriteLine($"शेष: {ttl?.TotalSeconds} सेकंड");4. प्रकाशन और सदस्यता (Pub/Sub)
रीयल-टाइम में संदेश आदान-प्रदान लागू करें। सब्सक्राइबर का उदाहरण:
// सब्सक्राइबर बनाएँISubscriber subscriber = redis.GetSubscriber();subscriber.Subscribe("notifications", (channel, message) =>{ Console.WriteLine($"सूचना प्राप्त हुई: {message}");});
// संदेश प्रकाशित करेंsubscriber.Publish("notifications", "नमस्ते, दुनिया!");5. ट्रांज़ैक्शन
एकाधिक ऑपरेशन को एटॉमिक रूप से निष्पादित करना:
ITransaction transaction = db.CreateTransaction();transaction.AddCondition(Condition.KeyNotExists("counter:lock"));transaction.StringSetAsync("counter:lock", "1");transaction.StringIncrementAsync("counter:value");
// ट्रांज़ैक्शन को फ़ाइनल करेंbool committed = transaction.Execute();Console.WriteLine(committed ? "ट्रांज़ैक्शन सफल" : "अस्वीकृत");StackExchange.Redis के लाभ
- उच्च प्रदर्शन
पुस्तकालय में भी
अनुशंसाएँ