pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
r = redis.Redis(connection_pool=pool)
对比。
r = redis.Redis(host='10.0.0.1', port=6379, db=0)
这两个工作得很好。
使用连接池的背后思想是什么?何时需要使用它?
从redis-py文档中得知:
在后台,redis-py使用连接池来管理与Redis服务器的连接。默认情况下,每个创建的Redis实例都将创建自己的连接池。您可以通过将已经创建的连接池实例传递给Redis类的connection_pool参数来覆盖此行为并使用现有的连接池。您可能选择这样做是为了实现客户端分片或更精细地控制如何管理连接。
因此,通常情况下,这不是您需要自己处理的事情,如果您需要处理,则说明您已经了解了!
class RedisConnection:
def __new__(cls):
if not hasattr(cls, 'instance'):
pool = redis.ConnectionPool(host='******', password='*****', port=*****, db=0)
cls.instance = redis.Redis(connection_pool=pool)
return cls.instance
obj_1=RedisConnection()
print(id(obj_1))
obj_2=RedisConnection()
print(id(obj_2))
redis
connectionpooling
python