Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

एक एकल जेडिस उदाहरण थ्रेडसेफ क्यों नहीं है?

एक एकल जेडिस उदाहरण थ्रेडसेफ नहीं है क्योंकि इसे इस तरह लागू किया गया था। पुस्तकालय के लेखक ने यही निर्णय लिया है।

आप बाइनरी जेडिस के स्रोत कोड की जांच कर सकते हैं जो कि जेडिस का एक सुपर प्रकार है https://github.com/xetorthio/jedis/blob/master/src/main/java/redis/clients/jedis/BinaryJedis.java

उदाहरण के लिए ये पंक्तियाँ:

public Transaction multi() {
    client.multi();
    client.getOne(); // expected OK
    transaction = new Transaction(client);
    return transaction;
}

जैसा कि आप देख सकते हैं कि जेडिस इंस्टेंस का उपयोग करके सभी थ्रेड्स के लिए लेन-देन फ़ील्ड साझा किया जाता है और इस पद्धति में आरंभ किया जाता है। बाद में इस लेन-देन का उपयोग अन्य तरीकों से किया जा सकता है। कल्पना कीजिए कि दो धागे एक ही समय में लेनदेन संबंधी संचालन करते हैं। परिणाम यह हो सकता है कि एक थ्रेड द्वारा बनाए गए लेन-देन को अनजाने में दूसरे थ्रेड द्वारा एक्सेस किया जाता है। इस मामले में लेन-देन क्षेत्र साझा राज्य पहुंच है जिसमें सिंक्रनाइज़ नहीं है। यह जेडिस को गैर-थ्रेडसेफ बनाता है।

लेखक ने जेडिस को गैर-थ्रेडसेफ और जेडिसपूल थ्रेडसेफ बनाने का फैसला ग्राहकों के लिए लचीलापन प्रदान करने के लिए किया हो सकता है ताकि यदि आपके पास एकल-थ्रेडेड वातावरण है तो आप जेडिस का उपयोग कर सकते हैं और बेहतर प्रदर्शन प्राप्त कर सकते हैं या यदि आपके पास एक बहुप्रचारित वातावरण है जिसका आप उपयोग कर सकते हैं जेडिसपूल और थ्रेड सुरक्षा प्राप्त करें।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. लेन-देन के साथ स्प्रिंग RedisConnectionFactory पूल से कनेक्शन वापस नहीं कर रहा है और समाप्त होने पर ब्लॉक कर देता है

  2. नोड/रेडिस और कॉलबैक के साथ नियंत्रण प्रवाह समस्या?

  3. ऑब्जेक्ट 'लक्ष्य' में फ़ील्ड त्रुटि 'फ़ील्ड' पर:अस्वीकृत मान []; कोड [typeMismatch.target.,typeMismatch.,typeMismatch.java.util.Date,typeMismatch]

  4. Laravel - बार-बार अपडेट के साथ वाक्पटु कैशिंग

  5. रेडिस एसिंक एपीआई