predis client class分析

原创 2016年08月31日 14:09:16

Client-> construct

construct -> options, connection, profile, getClientFor->getConnectionById

connection-> connections->create, getConnectionInitializerWrapper/initializer, connections->aggregate->Factory

_call -> executeRaw , createCommand/executeCommand->parseResponse,onErrorResponse(重试逻辑)

ClientContextInterface
pipeline, transaction -> sharedContextFactory, createPipeline / createTransaction

pubSubLoop -> sharedContextFactory, createPubSub->PubSubConsumer
monitor -> MonitorConsumer

重点类
Client 客户端封装类
Options 配置封装类

AbstractConnection 连接类(StreamConnection)->NodeConnectionInterface
AggregateConnectionInterface 组合交互连接

集群交互类(aggregate)
RedisCluster->ClusterStrategy->RedisStrategy(Command->Slot)
PredisCluster->ClusterStrategy->PredisStrategy
SentinelReplication->MaterSlaveReplication->ReplicationStrategy

命令抽象类
Command

功能特性类
Pipeline
Transaction
PubSub
Monitor

辅助类
Cluster Replication 集群策略类
Collection Redis数据结构辅助类
Profile Redis版本信息类
Response 结果处理工具类

协议扩展类
Protocol

RedisCluster类分析
负责处理Redis集群节点的连接管理

sentinel重点关注
SentinelReplication
ReplicationStrategy

接口数据结构分析
client 初始化: options->connections->ReplicationOption->SentinelReplication
建立连接:client->connection(=>SentinelReplication)
->current(getmaster/pickslave=>StreamConnection)->connect()->stream_socket_client();
普通命令:createCommand : client->profile(redisprofile)->createCommand=>Command
executeCommand: client->connection(=>SentinelReplication)
->getConnection(=>StreamConnection)->writeRequest/readResponse
组合命令:pipeline/transaction/PubSubConsumer/MonitorConsumer 共同继承ClientContextInterface
pipeline(callback)-> [pipeline->enqueue()] / executePipeline-> for(writeRequest) / for(readResponse)
哨兵模式:
SentinelReplication:参数sentinels(哨兵地址)和service(实例名称)
工厂类Factory用于创建连接类StreamConnection
策略类ReplicationStrategy用于选择连接节点,辅助判断读写分离
sentinel参数-》sentinel连接-》current/master/slave信息-》校验ROLE-》node连接-》访问数据

predis client class分析

Client-> construct construct -> options, connection, profile, getClientFor->getConnectionByIdconnect...
  • lulyon
  • lulyon
  • 2016年08月31日 14:09
  • 373

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

源代码结构 class StrictRedis RESPONSE_CALLBACKS 构造/from_url/__init__ 回调 set_response_callba...
  • lulyon
  • lulyon
  • 2016年06月13日 11:55
  • 346

laravel 问题 Class 'Predis\Client' not found

刚开始使用composer 下载predis,但是下载路径不在 laravel 的vendor 下,然后运行代码时 $redis = Redis::connection(); $redis->s...
  • qq_16877261
  • qq_16877261
  • 2017年10月25日 15:53
  • 755

predis

predis是php连接redis的操作库,由于它完全使用php编写,大量使用命名空间以及闭包等功能,只支持php5.3以上版本,故实测性能一般,每秒25000次读写,相信改换c语言编写的php扩展后...
  • z1002137615
  • z1002137615
  • 2016年10月13日 12:34
  • 731

百万级别知乎用户数据抓取与分析之PHP开发

这次抓取了110万的用户数据,数据分析结果如下: 开发前的准备 安装Linux系统(Ubuntu14.04),在VMWare虚拟机下安装一个Ubuntu; 安装PHP5.6或以上版本; 安...
  • luyaran
  • luyaran
  • 2016年12月13日 07:55
  • 280

PHP资源列表

PHP资源列表 一个PHP资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等。 初始翻译信息来自:《推荐!国外程序员整理的 ...
  • u013279509
  • u013279509
  • 2017年11月29日 14:28
  • 152

Redis学习7之Predis连接redis过程和测试

Predis连接redis过程和测试: 1.下载地址:https://github.com/nrk/predis 可以git clone或者下载压缩包再解压到redis的clients文件夹下;2...
  • bob601450868
  • bob601450868
  • 2015年09月16日 14:35
  • 1630

php连接redis的操作库predis操作大全

predis是php连接redis的操作库,由于它完全使用php编写,大量使用命名空间以及闭包等功能,只支持php5.3以上版本,故实测性能一般,每秒25000次读写,相信改换c语言编写的php扩展后...
  • zhuqihe02
  • zhuqihe02
  • 2015年11月24日 17:50
  • 1066

详解 Redis 应用场景及应用实例

转载:http://blog.csdn.net/niucsd/article/details/50966733   这个文章写的很牛,有些地方没看懂,先保存,后面慢慢看 Redis是一个开...
  • xianqi45
  • xianqi45
  • 2018年01月11日 11:38
  • 133

Redis 使用介绍

1.  MySql+Memcached架构的问题     实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着...
  • pzqingchong
  • pzqingchong
  • 2016年12月27日 14:11
  • 232
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:predis client class分析
举报原因:
原因补充:

(最多只允许输入30个字)