本文实例讲述了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程序设计有所帮助。