Redis集群

Posted ericz2j

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis集群相关的知识,希望对你有一定的参考价值。

为什么要redis集群?
即使有了主从复制,每个数据库都要保存整个集群中的所有书,这样很容易造成木桶效应。使用Jedis实现了分片集群,是由客户端决定哪些key数据放到哪个数据库中,如果在水平扩容时就需要手动的进行数据的迁移,而且需要将整个redis停止服务,这样是及其不好的,所以redis3.0引入了集群。

 技术图片

技术图片

 

配置集群
1.修改配置文件
(1)设置不同的端口
(2)开启集群cluster-enabled yes
(3)指定集群的配置文件,cluster-config-file "nodes-xxxx.conf"
2.创建集群环境
(1)安装ruby环境(redis5.0及以上不用安装ruby环境)
(2)创建集群

技术图片

 

插槽的分配
通过cluster nodes命令可以查看当前集群的信息。

技术图片

该信息反映了集群中的每一个节点的id、身份、连接数、插槽数。

 

当我们执行set命令时,redis是如何将数据保存到redis集群中的?
1.接收set命令
2.通过key计算出插槽值,根据插槽值找到相应的节点
3.重定向到该节点执行命令

整个redis提供了18364个插槽

插槽和key的关系
计算key的插槽值:key的有效部分使用CRC16算法计算出hash值,再将hash值对16384取余,得到插槽值。

 

新增集群节点

 技术图片

重新分配插槽:

技术图片

技术图片

 

删除集群节点
想要删除集群中的某个节点,必须严格的执行两步:
(1)将这个节点上的所有插槽全部移到其他节点上;
(2)使用redis-trib.rb删除节点

技术图片

 

Redis故障转移机制

技术图片

使用集群需要注意的事项

技术图片

 

以上是关于Redis集群的主要内容,如果未能解决你的问题,请参考以下文章

redis集群为啥要ruby

如何安装Redis集群

分布式缓存技术redis学习系列——redis高级应用(集群搭建集群分区原理集群操作)

Redis集群模式

redis集群介绍redis集群搭建配置redis集群操作

redis高级应用(集群搭建集群分区原理集群操作)