文章内容

2023/2/13 12:42:12,作 者: 黄兵

Redis 复用连接池

在每次使用 Redis 都进行连接的话会降低 Redis 的效率,都知道 Redis 是基于内存的数据库,效率超高,所以每次进行连接比真正使用消耗的资源和时间还多。

所以为了节省资源,减少多次连接损耗,连接池的作用相当于缓存了多个客户端与 Redis 服务端的连接,当有新的客户端来进行连接时,此时,只需要去连接池获取一个连接即可,实际上连接池就是把一个连接共享给多个客户端,可以说是广播,要用的话就去接收。

下面的示例使用了单例模式创建了一个 Redis 连接池:

import redis

class RedisOperation(object):
    def __new__(cls):
        if not hasattr(cls, 'instance'):
            pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
            cls.instance=redis.StrictRedis(connection_pool=pool)
        return cls.instance

obj1=RedisOperation()
print(id(obj1))

obj2 = RedisOperation()
print(id(obj2))

以上两个对象都指的是同一个 redis 连接池。


参考资料:

1、How to use connection pooling for redis.StrictRedis?

2、python 多进程 redis连接池_Python通过连接池连接redis,操作redis队列!

分享到:

发表评论

评论列表