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

先上结论:直接使用 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
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值