redis python客户端(redis-py)分析

源代码结构
class StrictRedis
RESPONSE_CALLBACKS
构造/from_url/__init__

回调  set_response_callback
响应解析 parse_response

流水线  pipeline
事务 transaction
lock 
订阅发布 pubsub 
执行命令 execute_command

class pubsub-> PubSubWorkerThread
BasePipeline/ StrictPipeline -> pipe
lock -> setnx
Script->script load / eval

connectionPool->connection->BaseParser( PythonParser(-> SocketBuffer ) / HiredisParser(->Hiredis) )


客户端构成: strictRedis类,与官方语法一致;Redis向后语法兼容
连接与连接池:连接池默认在底层生效,可用于目标连接,客户端分片,细粒度的链接管理;连接分为TCP连接和Unix本地套接字连接;自定义连接池(用于异步框架中控制套接字行为)
解析器(parsers): Hiredis(默认), PythonRedis

响应回调:自定义回调REDIS_CALLBACKS 
线程安全:禁用select;传递PubSub和Pipeline对象不安全

setinel支持:通过把连接池绑定到sentinel,实现master和slave对象的构造
scan迭代器

支持sentinel的redis client的指南:根据sentinel地址和服务名,获取master(slave)地址
1.尝试连接可用的sentinel
2. 请求master地址(请求slave列表)
3 连接master,确认master身份
4. 上述任一步失败,重连
5 与master连接断掉,需要重新获取master地址并连接 
6 sentinel自动更新:连接master后,获取sentinel列表,并在客户端更新

cluster
基于官方的redis-rb-cluter移植过来的,符合redis集群规范。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值