在官方文档Cluster Spec中,做者详细介绍了Redis集群为何要设计成如今的样子。最核心的目标有三个:php
redis Cluster集群功能推出已经有一段时间了。在单机版的Redis中,每一个Master之间是没有任何通讯的,因此咱们通常在Jedis客户端或者Codis这样的代理中作Pre-sharding。按照CAP理论来讲,单机版的Redis属于保证CP(Consistency & Partition-Tolerancy)而牺牲A(Availability),也就说Redis可以保证全部用户看到相同的数据(一致性,由于Redis不自动冗余数据)和网络通讯出问题时,暂时隔离开的子系统能继续运行(分区容忍性,由于Master之间没有直接关系,不须要通讯),可是不保证某些结点故障时,全部请求都能被响应(可用性,某个Master结点挂了的话,那么它上面分片的数据就没法访问了)。node
有了Cluster功能后,Redis从一个单纯的NoSQL内存数据库变成了分布式NoSQL数据库,CAP模型也从CP变成了AP。也就是说,经过自动分片和冗余数据,Redis具备了真正的分布式能力,某个结点挂了的话,由于数据在其余结点上有备份,因此其余结点顶上来就能够继续提供服务,保证了Availability。然而,也正由于这一点,Redis没法保证曾经的强一致性了。这也是CAP理论要求的,三者只能取其二。mysql
设置3个节点,将enable-cluster 设置为yes, 修改cluster-config-file nodes-6379.conf,将其设置为不一样的文件便可,无需此nodes文件存在。
修改redis.conf配置文件的内容:redis
cluster-enabled yes
cluster-config-file nodes-6379.confsql
其中node-6739.conf并不要求真实存在,只要不一样的redis实例不相同便可。
而后分别启动各个redis的实例,而后查看进程: shell
从图中能够发现,其中的进程后面都带有cluster的字样,标示其为cluster集群状态。
这里启动了3个实例: 6379, 6380, 6381.数据库
这里通常须要基于redis-cli进入命令行参数,而后输入cluster meet的命令,进行cluster的注册:
ubuntu
这里咱们从6379这个实例登录,分别注册6380, 6381两个节点。注册完成后,而后查看集群信息,能够发现其整个集群的信息为3个节点。ruby
建立初始化slot的脚本:bash
>
#!/bin/bash
for i in {1..16383}; do ./src/redis-cli cluster addslots $i; done
在脚本里面总共添加16383个slot。
修改该脚本的执行权限,执行之,便可获取相应的结果信息。
cluster slots : 查看slots信息
cluster nodes: 查看节点信息
从上面能够整个集群的基本情况。
基于命令行来查看信息的设置:
redis-cli -p 6739
redis-cli -c -p 6739
从这里能够看懂,在cluster模式下与普通模式下的不一样,集群模式下客户端能够自动的切换到其余节点。
正常状况下的客户端执行逻辑以下:
各个操做系统的不一样,安装方案各有差别,这里以ubuntu的方式来进行。
src/redis-trib.rb reshard 127.0.0.1:6739
从源节点移动到目标节点
• ./redis-trib.rb reshard 127.0.0.1:6379
• How many slots do you want to move (from 1 to 16384)? 4000 //输入被迁移的solt的数量
• What is the receiving node ID? //输入目的地节点的id,执行第一行命
• Please enter all the source node IDs.//输入被迁移的槽
• Do you want to proceed with the proposed reshard plan (yes/no)? Yes //迁移计划确认
如何来确认reshard来进行呢?查看命令的日志便可得知:
redis提供了完整的一套如何进行集群处理的机制,并利用一致性hash来更好的处理redis的动态调整。
http://www.woaipu.com/shops/zuzhuan/61406http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117777http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117890http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=117994http://nanning.xjwy.cn/f/bencandy.php?fid=43&id=118376