JedisCluster源码解析

jedisCluster的源码分析主要包括两部分,一个是集群的初始化,一个是集群的访问。

集群初始化分析过程

1、调用构造函数初始化

JedisCluster源码解析_第1张图片

2、创建连接redis集群对象

JedisCluster源码解析_第2张图片

3、继续调用构造函数初始化

JedisCluster源码解析_第3张图片

4、初始化slot和node的映射关系,也就是具体哪个slot放在那个node上

JedisCluster源码解析_第4张图片

5、调用函数初始化slot和node关系

JedisCluster源码解析_第5张图片

6、通过cluster slot命令返回主从关系并解析结果

192.168.0.103:6379> CLUSTER slots

1) 1) (integer) 5461  ---> start slot

2) (integer) 10922 --> end slot

3) 1) "192.168.0.103" --> master ip

2) (integer) 6380 --> master port

3) "84e20cc2619b5dbc811e5974f235b1ee365c0926"

4) 1) "192.168.0.103" --> slave ip

2) (integer) 6383 --> slave port

3) "b76596f357c000f3878f0e86adeb2f1a05128879"

JedisCluster源码解析_第6张图片


访问redis数据过程分析

1、get入口函数

JedisCluster源码解析_第7张图片

2、通过key的CRC计算得到slot从而得到connection,如果获取异常失败会重现更新slot和对应的connection信息

JedisCluster源码解析_第8张图片


JedisCluster源码解析_第9张图片


JedisCluster源码解析_第10张图片

3、获取返回结果

JedisCluster源码解析_第11张图片

JedisCluster源码解析_第12张图片

之前以为连接失败后就没法获取数据了,现在发现在获取连接失败后其实是有重算机制的

你可能感兴趣的:(JedisCluster源码解析)