redis集群分片的原理详解

redis集群分片的主要目的是解决容量问题,一般redis每台机器的内存都设置的比较小,当然小有小的好处,比如在做备份时负担比较小,管理内存的代价小等等,集群设计根据不同业务场景可以进行如下设计:

1、数据可以进行业务分类:不同业务选用不同的redis

redis集群分片的原理详解_第1张图片

2、数据没办法拆分:

1)hash取模:

redis集群分片的原理详解_第2张图片

弊端:取模的数必须固定 %3、%4、%10 影响分布式下的扩展性

2)随机存储:

redis集群分片的原理详解_第3张图片

 

3)一致性hash:

redis集群分片的原理详解_第4张图片

规划环形hash环:

redis集群分片的原理详解_第5张图片 

 

优点:你加节点,可以分担其他节点的压力,不会造成全局洗牌

缺点:新增节点造成一小部分数据不能命中

1)比如击穿问题出现,压到mysql查询,然后在放到缓存中。

2)去取离我最近的2个物理节点,如果两次都没有,再去数据库取,放到缓存中。

3、分片的形式:

1)直接连:

redis集群分片的原理详解_第6张图片

redis的连接成本很高,对server端造成的

 

2)采用代理:

redis集群分片的原理详解_第7张图片

 

3)采用LVS负载:

redis集群分片的原理详解_第8张图片

常用三种代理:twitter、predixy、cluster ;后面我们后详细演示。

4、redis分区原理:

1)直接分:

redis集群分片的原理详解_第9张图片

2)间接灵活分区:

redis集群分片的原理详解_第10张图片 

比如客户端连接的是中间的节点,而某个key的hash值是4 ,此请求会在中间的节点再次hash,找到hash为4的key所在的节点。 

5、实战演示 twitter predixy代理:

 

redis集群分片的原理详解_第11张图片

进入:

redis集群分片的原理详解_第12张图片 

继续:

redis集群分片的原理详解_第13张图片 

 

6、演示twitter 进入服务器:相关git链接

redis集群分片的原理详解_第14张图片

新建 twemproxy 目录:

redis集群分片的原理详解_第15张图片

 下载前升级:

redis集群分片的原理详解_第16张图片

 下载

  查看:

redis集群分片的原理详解_第17张图片

参考:

redis集群分片的原理详解_第18张图片 

流程:

$ git clone [email protected]:twitter/twemproxy.git
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=full
$ make
$ src/nutcracker -h

线安装:

 正式安装:

 版本底,查看:

redis集群分片的原理详解_第19张图片

去这里镜像:

redis集群分片的原理详解_第20张图片 拉取:

redis集群分片的原理详解_第21张图片 拉到了:

redis集群分片的原理详解_第22张图片

查看后清除缓存:

redis集群分片的原理详解_第23张图片 再次下载:

redis集群分片的原理详解_第24张图片

继续:

redis集群分片的原理详解_第25张图片 然后:

redis集群分片的原理详解_第26张图片 继续:

redis集群分片的原理详解_第27张图片

然后 make命令:

查看:

 

步骤太多了, 总之,按照下面的文档一步一步来,很快就搭建配置好。到此分片分享完成,大家一定小详细查看文档,认真测试,下一篇我们分享补充一些常用的项目使用的API,敬请期待!

常用文档参考

你可能感兴趣的:(redis,相关,java)