Redis py:什么时候使用连接池?

u5rb5r59  于 7个月前  发布在  Redis
关注(0)|答案(2)|浏览(81)
pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)
r = redis.Redis(connection_pool=pool)

字符串
vs.

r = redis.Redis(host='10.0.0.1', port=6379, db=0)


这两个很好。
使用连接池背后的想法是什么?什么时候使用它?

mw3dktmi

mw3dktmi1#

从redis-py文档:
在后台,redis-py使用连接池来管理到Redis服务器的连接。默认情况下,你创建的每一个Redis示例都会创建自己的连接池。你可以覆盖这个行为,并通过将一个已经创建的连接池示例传递给连接池来使用现有的连接池。Redis类的pool参数。你可以选择这样做,以实现客户端分片或更细粒度地控制如何管理连接。
所以,通常这不是你需要自己处理的事情,如果你做了,那么你就知道了!

1szpjjfi

1szpjjfi2#

默认情况下,您创建的每个Redisinstance都会依次创建自己的连接池。您可以通过将已创建的connection pool示例传递给Redis类的connection_pool参数来覆盖此行为并使用现有的连接池。
Example :

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))

字符串
redisconnectionpoolingpython

相关问题