节点
Redis Cluster是分布式架构:即Redis Cluster中有多个节点,每个节点都负责进行数据读写操作每个节点之间会进行通信。
meet操作
节点之间会相互通信
meet操作是节点之间完成相互通信的基础,meet操作有一定的频率和规则
实现redis集实例
关闭之前的redis端口
创建文件夹
vim redis.conf
port 7001
cluster-enabled yes
cluster-config-file nodes.conf cluster-node-timeout 5000
appendonly yes
pidfile "/usr/local/rediscluster/7001/redis.pid"
Logfile "/usr/Local/rediscluster/7001/redis.Log"
daenonize yes
dir "/usr/iocal/rediscluster/7001"
启动这个文件redis-server redis.conf
生成一些配置文件
分别将这些文件放置到每一个主机上
分别修改里面对应的端口号为对应的7002.....6
然后启动redis文件
redis-server redis.conf
进入info查看信息enabled是1证明集群是激活的
现在我们已经有了六个正在运行中的Redis实例,接下来我们需要使用这些实例来创建集群,并为每个节点编写配置文件。
通过使用Redis集群命令行工具redis-trib,编写节点配置文件的工作可以非常容易地完成:redis-trib位于Redis源码的src文件夹中,它是一个Ruby程序,这个程序通过向实例发送特殊命令来完成创建新集群,检查集群,或者对集群进行重新分片(reshared)等工作。
这里需要安装ruby
搭建集群
分配槽
e16384个槽平均分配给节点进行管理,每个节点只能对自己负责的槽进行读写操作
由于每个节点之间都彼此通信,每个节点都知道另外节点负责管理的槽范围
客户端访问任意节点时,对数据key按照CRC16规则进行
hash运算,然后对运算结果对16383进行取作,如果余数在当前访问的节点管理的槽范围内,则直接返回对应的数据如果不在当前节点负责管理的槽范围内,则会告诉客户端去哪个节点获取数据,由客户端去正确的节点获取数据
测试存储信息
关闭7002发现7006代替7002变成master,有0个slave
通过appendonly.aof恢复数据
启动redis
7006中也要进行该操作
发现key在7006中
添加新的节点
修改端口号将7001分别改为7007和7008
然后启动redis
将其添加到集群中去
将7008添加到节点中
查看
给7007添加数据槽
再次查看每个人的槽都一样了
再次查看7008已经得到了数据