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

पायथन में रेडिस कनेक्शन पूल का उपयोग करने का सही तरीका

उ1:हाँ, वे एक ही कनेक्शन पूल का उपयोग करते हैं।

उ2:यह एक अच्छा अभ्यास नहीं है। चूंकि आप इस उदाहरण के प्रारंभ को नियंत्रित नहीं कर सकते हैं। एक विकल्प सिंगलटन का उपयोग किया जा सकता है।

import redis


class Singleton(type):
    """
    An metaclass for singleton purpose. Every singleton class should inherit from this class by 'metaclass=Singleton'.
    """
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls]


class RedisClient(object):

    def __init__(self):
        self.pool = redis.ConnectionPool(host = HOST, port = PORT, password = PASSWORD)

    @property
    def conn(self):
        if not hasattr(self, '_conn'):
            self.getConnection()
        return self._conn

    def getConnection(self):
        self._conn = redis.Redis(connection_pool = self.pool)

फिर RedisClient सिंगलटन वर्ग होगा। कोई फर्क नहीं पड़ता कि आप कितनी बार client = RedisClient() को कॉल करते हैं , आपको वही वस्तु मिलेगी।

तो आप इसे इस तरह इस्तेमाल कर सकते हैं:

from RedisClient import RedisClient

client = RedisClient()
species = 'lion'
key = 'zoo:{0}'.format(species)
data = client.conn.hmget(key, 'age', 'weight')
print(data)

और पहली बार जब आप client = RedisClient() . को कॉल करते हैं वास्तव में इस उदाहरण को प्रारंभ करेगा।

या आप अलग-अलग तर्कों के आधार पर अलग-अलग उदाहरण प्राप्त करना चाह सकते हैं:

class Singleton(type):
    """
    An metaclass for singleton purpose. Every singleton class should inherit from this class by 'metaclass=Singleton'.
    """
    _instances = {}

    def __call__(cls, *args, **kwargs):
        key = (args, tuple(sorted(kwargs.items())))
        if cls not in cls._instances:
            cls._instances[cls] = {}
        if key not in cls._instances[cls]:
            cls._instances[cls][key] = super(Singleton, cls).__call__(*args, **kwargs)
        return cls._instances[cls][key]



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नोडजेएस में लुआ स्क्रिप्ट चलाने के लिए रेडिस eval कमांड निष्पादित करना

  2. नोडज, रेडिस। जाँच करें कि क्या कुंजियाँ मौजूद हैं और यदि नहीं तो नया बनाएँ

  3. क्या रेडिस डीबी जैसा कुछ है, लेकिन रैम आकार तक सीमित नहीं है?

  4. नोड.जेएस में चैट सर्वर के लिए रेडिस पब/उप

  5. स्प्रिंग बूट फ्रेमवर्क पर JedisConnectionFactory बेस के टाइमआउट को कैसे कॉन्फ़िगर करें