规划网络
用一台虚拟机模拟6个节点,一台机器6个节点,创建出3 master、3 salve 环境。虚拟机是 CentOS7 ,ip地址192.168.152.32
创建 Redis 节点
在 redis_cluster 目录下,创建名为7001、7002,7003、7004、7005,7006的目录
mkdir 7001 7002 7003 7004 7005 7006
将 redis.conf 拷贝到这六个目录中,
echo ./7002 ./7003 ./7004 ./7005 ./7006 | xargs -n 1 cp -v /usr/redis/redis_cluster/7001/redis.conf
配置redis7001.conf
集群配置一般不设置密码
启动这6个redis (/usr/redis/bin/redis-server /usr/redis/redis_cluster/7001/redis.conf)
创建redis的集群
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
选择yes
出现此图就表示配置成功
用 redis-cli 连接redis集群
./redis-cli -c -h 127.0.0.1 -p 7001
查看集群信息 cluster nodes
查看集群状态 ./redis-cli --cluster check 127.0.0.1:7001,7002 ~~~
给集群添加一个节点
- 创建一个7007节点
- 修改配置文件
redis-cli --cluster add-node 加入集群节点
查看节点的状态 /usr/redis/bin/redis-cli --cluster check 127.0.0.1:7007
分配slots
redis-cli --cluster reshard
/usr/redis/bin/redis-cli --cluster reshard 127.0.0.1:7007
all 代表从所有有数据据节点进行迁移到目的节点,也可以选择 目标节点id回车,最后以done进行结束
done 代表结束
分配成功后
配置从节点
创建7008,并修改配置文件
添加从节点
redis-cli --cluster add-node 新节点 集群节点 --cluster-slave --cluster-master-id 主节点的id
删除节点
/usr/redis/bin/redis-cli --cluster del-node 127.0.0.1:7008(集群节点)beda73bc7be37a76806795ddcfe9a8037594ea47(需要删除的节点的id)
7008删除成功
如果要删除有卡槽的节点需要重新分配节点(/usr/redis/bin/redis-cli --cluster reshard 127.0.0.1:7007)将要删除的节点的卡槽转移给别的节点。
删除7007( /usr/redis/bin/redis-cli --cluster del-node 127.0.0.1:7001 56304e9604f4a3eda61360afbba7ef467b766252)
删除成功(查看状态:/usr/redis/redis-cli --cluster check 127.0.0.1:7001)
关闭节点(优雅的关闭)不要使用kill命令,使用后集群里面的信息会被破坏
写一个脚本自动开启redis
执行脚本
开启成功
集群不支持批量存储
Mset 不支持的 ,key取余之后得到的值可能是不一样的,放到不同的槽里面,没办法更改slots
如果非要存 就给他们分一个组 key后面加上{名字}
对于这样的数据进行取值:
关闭7003
7003宕机后卡槽会自动分配给别的
7006变成了主节点
7003重启后变成了7006的从机