您的位置:首页 > 数据库 > Redis

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

2016-06-13 11:55 344 查看
源代码结构
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集群规范。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: