源代码结构
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-py-cluster
https://pypi.python.org/pypi/redis-py-cluster
基于官方的redis-rb-cluter移植过来的,符合redis集群规范。