Redis कनेक्शन स्ट्रिंग्स #
अधिक बहुमुखी यूआरआई प्रारूप का समर्थन करने के लिए रेडिस कनेक्शन स्ट्रिंग का विस्तार किया गया है जो अब एक ही कनेक्शन स्ट्रिंग (डीबी कनेक्शन स्ट्रिंग के समान) में अधिकांश रेडिस क्लाइंट सेटिंग्स को कैप्चर करने में सक्षम है।
Redis कनेक्शन स्ट्रिंग्स एक साधारण होस्टनाम . से कई URI जैसे स्वरूपों का समर्थन करता है या आईपी पता और पोर्ट पूरी तरह से योग्य URI . के साथ जोड़ी बनाएं QueryString पर निर्दिष्ट कई विकल्पों के साथ।
समर्थित प्रारूपों के कुछ उदाहरण:
localhost
127.0.0.1:6379
redis://localhost:6379
password@localhost:6379
clientid:password@localhost:6379
redis://clientid:password@localhost:6380?ssl=true&db=1
जानकारी
ConfigTests.cs में और उदाहरण देखे जा सकते हैं
किसी भी अतिरिक्त कॉन्फ़िगरेशन को QueryString पैरामीटर के रूप में निर्दिष्ट किया जा सकता है। निर्दिष्ट किए जा सकने वाले विकल्पों की पूरी सूची में शामिल हैं:
एसएसएल | बूल | यदि यह SSL कनेक्शन है |
डीबी | इंट | Redis DB इस कनेक्शन को इस पर सेट किया जाना चाहिए |
ग्राहक | स्ट्रिंग | विश्लेषणात्मक उद्देश्यों के लिए इस कनेक्शन के लिए निर्दिष्ट करने के लिए एक टेक्स्ट उपनाम |
पासवर्ड | स्ट्रिंग | इस कनेक्शन के लिए पासवर्ड का Url एन्कोडेड संस्करण |
कनेक्ट टाइमआउट | इंट | टीसीपी सॉकेट कनेक्शन बनाने के लिए एमएस में समयबाह्य |
भेजें समय समाप्त | इंट | सिंक्रोनस टीसीपी सॉकेट भेजने के लिए एमएस में टाइमआउट |
समय समाप्त प्राप्त करें | इंट | सिंक्रोनस टीसीपी सॉकेट रिसीव की प्रतीक्षा के लिए एमएस में टाइमआउट |
IdleTimeOutSecs | इंट | एक निष्क्रिय कनेक्शन को सक्रिय माने जाने के लिए सेकंड में समयबाह्य |
नेमस्पेस उपसर्ग | स्ट्रिंग | सर्विसस्टैक के लिए एक कस्टम उपसर्ग का उपयोग करें। रेडिस आंतरिक अनुक्रमणिका कोलेशन |
ServiceStack.Redis SSL समर्थन #
ServiceStack.Redis SSL कनेक्शन का समर्थन करता है इसे सुरक्षित SSL कनेक्शन . पर दूरस्थ Redis सर्वर इंस्टेंस तक पहुंचने के लिए उपयुक्त बनाना ।
SSL प्रोटोकॉल निर्दिष्ट करें #
एन्क्रिप्टेड एसएसएल कनेक्शन के लिए उपयोग किए जाने वाले एसएसएल प्रोटोकॉल को बदलने के लिए समर्थन sslprotocols
का उपयोग करके कनेक्शन स्ट्रिंग पर सेट किया जा सकता है। संशोधक, उदा:
var connString = $"redis://{Host}?ssl=true&sslprotocols=Tls12&password={Password.UrlEncode()}";
var redisManager = new RedisManagerPool(connString);
using var client = redisManager.GetClient();
//...
Azure Redis से कनेक्ट करना #
चूंकि एसएसएल के माध्यम से एज़्योर रेडिस कैश से कनेक्ट करना इस सुविधा के लिए प्राथमिक उपयोग-मामला था, इसलिए हमने शुरू करने में आपकी सहायता के लिए एसएसएल के माध्यम से एज़्योर रेडिस से जुड़ना एक नया जोड़ा है।
Redis GEO #
Redis 3.2.0 की रिलीज़ इसे रोमांचक नई GEO क्षमताएँ लेकर आई है जो आपको Redis और क्वेरी स्थानों में एक निर्दिष्ट दायरे में Lat/Long निर्देशांक संग्रहीत करने देगी। इस कार्यक्षमता को प्रदर्शित करने के लिए हमने एक नया रेडिस जीईओ लाइव डेमो बनाया है जो आपको यू.एस. में कहीं भी क्लिक करने की सुविधा देता है, एक निश्चित दायरे में निकटतम शहरों की सूची खोजने के लिए, लाइव डेमो यहां:https://redis.netcore.ioपर है। पी>
Redis क्लाइंट मैनेजर #
RedisClient
तक पहुंचने का अनुशंसित तरीका उदाहरण नीचे उपलब्ध थ्रेड-सुरक्षित क्लाइंट प्रबंधकों में से किसी एक का उपयोग करना है। ग्राहक प्रबंधक कनेक्शन कारखाने हैं जिन्हें आपके आईओसी या स्थिर वर्ग में सिंगलटन के रूप में पंजीकृत किया जाना चाहिए।
RedisManagerPool #
उन्नत Redis URI कनेक्शन स्ट्रिंग्स के साथ हम मौजूदा PooledRedisClientManager
को सरल और कारगर बनाने में सक्षम हैं कार्यान्वयन किया है और इसे RedisManagerPool
. नामक एक नए ग्राहक प्रबंधक में निकाला है ।
क्लाइंट मैनेजर पर ही उपरोक्त सभी विकल्पों को हटाने के अलावा, रीड ओनली कनेक्शन स्ट्रिंग्स को भी हटा दिया गया है, ताकि कॉन्फ़िगरेशन सामान्य उपयोग के मामले के साथ अधिक सरल और अधिक संरेखित हो:
container.Register<IRedisClientsManager>(c =>
new RedisManagerPool(redisConnectionString));
पूलिंग व्यवहार
अधिकतम पूल आकार तक पहुंचने के बाद आवश्यक किसी भी कनेक्शन को पूल के बाहर बनाया और निपटाया जाएगा। अधिकतम पूल आकार तक सीमित न रहने के कारण, RedisManagerPool
. में पूलिंग व्यवहार संभावित रूप से अधिक खुले/बंद कनेक्शन की संख्या होने की कीमत पर एक छोटा कनेक्शन पूल आकार बनाए रख सकता है।
PooledRedisClientManager #
यदि आप क्लाइंट मैनेजर पर ही विकल्पों को परिभाषित करना पसंद करते हैं या आप अलग-अलग रीड/राइट और रीड ओनली (यानी मास्टर और रेप्लिका) रेडिस-सर्वर प्रदान करना चाहते हैं, तो PooledRedisClientManager
का उपयोग करें। इसके बजाय:
container.Register<IRedisClientsManager>(c =>
new PooledRedisClientManager(redisReadWriteHosts, redisReadOnlyHosts) {
ConnectTimeout = 100,
//...
});
पूलिंग व्यवहार
PooledRedisClientManager
एक अधिकतम कनेक्शन सीमा लगाता है और जब इसका अधिकतम पूल आकार पूरा हो जाता है तो इसके बजाय अगले RedisClient
तक किसी भी नए कनेक्शन अनुरोध पर रोक लगा दी जाएगी। वापस पूल में छोड़ा जाता है। अगर PoolTimeout
. में कोई क्लाइंट उपलब्ध नहीं होता है , एक पूल TimeoutException
फेंक दिया जाएगा।
केवल पढ़ने वाले ग्राहक #
डिफ़ॉल्ट रूप से एक RedisClient को GetRedisClient()
. के साथ हल करना या GetRedisClientAsync()
कॉन्फ़िगर किए गए प्राथमिक (मास्टर) होस्ट से जुड़ा क्लाइंट लौटाएगा, यदि आपके पास प्रतिकृति (दास) होस्ट भी कॉन्फ़िगर किया गया है, तो आप इसे GetReadOnlyClient()
के साथ एक्सेस कर सकते हैं। या GetReadOnlyClientAsync()
एपीआई, जैसे:
using var redisReadOnly = clientsManager.GetReadOnlyClient();
BasicRedisClientManager #
यदि कनेक्शन पूलिंग का उपयोग नहीं करना चाहते हैं (यानी आप स्थानीय रेडिस-सर्वर इंस्टेंस तक पहुंच रहे हैं) तो आप एक बुनियादी (गैर-पूल किए गए) क्लाइंट मैनेजर का उपयोग कर सकते हैं जो एक नया RedisClient
बनाता है। उदाहरण हर बार:
container.Register<IRedisClientsManager>(c =>
new BasicRedisClientManager(redisConnectionString));
Redis क्लाइंट तक पहुंचना #
एक बार पंजीकृत होने के बाद, RedisClient तक पहुंच सभी क्लाइंट मैनेजरों में समान होती है, जैसे:
var clientsManager = container.Resolve<IRedisClientsManager>();
using var redis = clientsManager.GetClient();
redis.IncrementValue("counter");
List<string> days = redis.GetAllItemsFromList("days");
//Access Typed API
var redisTodos = redis.As<Todo>();
redisTodos.Store(new Todo {
Id = redisTodos.GetNextSequence(),
Content = "Learn Redis",
});
var todo = redisTodos.GetById(1);
//Access Native Client
var redisNative = (IRedisNativeClient)redis;
redisNative.Incr("counter");
List<string> days = redisNative.LRange("days", 0, -1);
उदाहरण में प्रयुक्त उपलब्ध RedisClient API की अधिक विस्तृत सूची नीचे C# इंटरफेस में देखी जा सकती है:
- IRedisClientsManager
- IRedisClient
- IRedisNativeClient
- IRedisसदस्यता
पाइपलाइन और लेन-देन API #
- IRedisTransaction
- IRedisPipelineShared
- IRedisQueueableOperation
- IRedisQueueCompletableOperation
जेनेरिक क्लाइंट API #
- IRedisTypedClient
- IRedisHash
- IRedisList
- IRedisSet
- IRedisSortedSet
- IRedisTypedQueueableOperation
सर्वर संग्रह एपीआई #
- IRedisHash
- IRedisList
- IRedisSet
- IRedisSortedSet
Async Redis #
ServiceStack.Redis में async समर्थन इष्टतम दक्षता के लिए डिज़ाइन किया गया है और ValueTask
. का उपयोग करता है और अन्य आधुनिक Async API केवल .NET मानक 2.0 . में उपलब्ध हैं और .NET Framework v4.7.2+ जिन परियोजनाओं में अधिकांश सिंक एपीआई के लिए एसिंक एपीआई समकक्ष हैं, जैसा कि नीचे दिए गए एसिंक रेडिस इंटरफेस में निहित है:
- IRedisClientsManagerAsync
- IRedisClientAsync
- IRedisNativeClientAsync
- IRedisSubscriptionAsync
Async Pipeline &Transaction APIs #
- IRedisTransactionAsync
- IRedisPipelineSharedAsync
- IRedisQueueableOperationAsync
- IRedisQueueCompletableOperationAsync
Async Generic Client APIs #
- IRedisTypedClientAsync
- IRedisHashAsync
- IRedisListAsync
- IRedisSetAsync
- IRedisSortedSetAsync
- IRedisTypedTransactionAsync
- IRedisTypedQueueableOperationAsync
Async Server Collection APIs #
- IRedisHashAsync
- IRedisListAsync
- IRedisSetAsync
- IRedisSortedSetAsync