python中Redis, StrictRedis, ConnectPool的联系与区别

本文探讨了Python中Redis, StrictRedis和ConnectPool的关系与区别。StrictRedis实际上就是Redis,两者并无本质差异,都默认使用连接池ConnectPool进行管理。ConnectPool负责实现连接池的创建、获取、释放和断开连接。在高并发场景下,使用StrictRedis即可,除非对连接池有特定需求,否则无需手动配置连接池。" 137384315,22837586,ESP32使用I2S播放网络音乐及接收麦克风声音,"['嵌入式开发', '物联网', 'ESP32开发', '音频播放', '传感器接口']
摘要由CSDN通过智能技术生成

先上结论:直接使用 StrictRedis() 即可
三者关系: StrictRedis = Redis > ConnectPool(包含)

原因如下:

  1. 官方考虑向后兼容性,推荐使用StrictRedis()。两者没有任何差别,redis.client.py 源码中可以直接看出StrictRedis就是Redis
StrictRedis = Redis
  1. ConnectPool是redis的连接池类, 是用来实现连接池及其管理的, 而StrictRedis()默认使用连接池,不必在单独使用ConnectPool。(这个在后面的源码里会详细解释)

  2. 因此,我们无需考虑redis关于连接的细节,直接使用StrictRedis()即可


下面我们通过源码,深入探寻Redis, StrictiRedis, connectionPool之间的联系,以及实现原理。

既然StrictRedis就是Redis, 那就直接扒Redis源码看看:

Redis.__init__(…)
def __init__(self, host='localhost', port=6379,
         db=0, password=None, socket_timeout=None,
         socket_connect_timeout=None,
         socket_keepalive=None, socket_keepalive_options=None,
         connection_pool=None, unix_socket_path=None,
         encoding='utf-8', encoding_errors='strict',
         charset=None, errors=None,
         decode_responses=False, retry_on_timeout=False,
         ssl=False, ssl_keyfile=None, ssl_certfile=None,
         ssl_cert_reqs='required', ssl_ca_certs=None,
         max_connections=None):
if not connection_pool:
    ... # 为了阅读效果,精简了部分注释和无关代码。

    kwargs = {
   
        'db': db,
        'password': password,
        'socket_timeout': socket_timeout,
        'encoding': encoding,
        'encoding_errors': encoding_errors,
        'decode_responses': decode
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值