Python使用redis pool的一种单例实现方式

1135次阅读  |  发布于5年以前

本文实例讲述了Python使用redis pool的一种单例实现方式。分享给大家供大家参考,具体如下:

为适应多个redis实例共享同一个连接池的场景,可以类似于以下单例方式实现:


    import redis
    class RedisDBConfig:
      HOST = '127.0.0.1'
      PORT = 6379
      DBID = 0
    def operator_status(func):
      '''''get operatoration status
      '''
      def gen_status(*args, **kwargs):
        error, result = None, None
        try:
          result = func(*args, **kwargs)
        except Exception as e:
          error = str(e)
        return {'result': result, 'error': error}
      return gen_status
    class RedisCache(object):
      def __init__(self):
        if not hasattr(RedisCache, 'pool'):
          RedisCache.create_pool()
        self._connection = redis.Redis(connection_pool = RedisCache.pool)
      @staticmethod
      def create_pool():
        RedisCache.pool = redis.ConnectionPool(
            host = RedisDBConfig.HOST,
            port = RedisDBConfig.PORT,
            db  = RedisDBConfig.DBID)
      @operator_status
      def set_data(self, key, value):
        '''''set data with (key, value)
        '''
        return self._connection.set(key, value)
      @operator_status
      def get_data(self, key):
        '''''get data by key
        '''
        return self._connection.get(key)
      @operator_status
      def del_data(self, key):
        '''''delete cache by key
        '''
        return self._connection.delete(key)
    if __name__ == '__main__':
      print RedisCache().set_data('Testkey', "Simple Test")
      print RedisCache().get_data('Testkey')
      print RedisCache().del_data('Testkey')
      print RedisCache().get_data('Testkey')

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8