本文实例讲述了Python使用redis pool的一种单例实现方式。分享给大家供大家参考,具体如下:
为适应多个redis实例共享同一个连接池的场景,可以类似于以下单例方式实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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程序设计有所帮助。