redis针对大数据量做缓存的三种解决方案:
1、哈希取余分区:哈希取余分区_paper@planes的博客-CSDN博客_哈希取余..
2、一致性哈希算法分区:一致性哈希算法分区_paper@planes的博客-CSDN博客_一致性哈希分区
3、哈希槽分区:分布式存储---哈希槽的概念_paper@planes的博客-CSDN博客_哈希槽
正文:
1、docker 3主 3从redis集群配置
1、新建6个docker容器实例
docker run -d --name redis-node-1 --net host --privileged=true -v /home/redis/share/redis-node-1:/data redis:latest --cluster-enabled yes --appendonly yes --port 6381
(--net host:使用宿主机的IP和端口(默认),--cluster-enabled yes 是否开启集群)
docker run -d --name redis-node-2 --net host --privileged=true -v /home/redis/share/redis-node-2:/data redis:latest --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /home/redis/share/redis-node-3:/data redis:latest --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /home/redis/share/redis-node-4:/data redis:latest --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /home/redis/share/redis-node-5:/data redis:latest --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /home/redis/share/redis-node-6:/data redis:latest --cluster-enabled yes --appendonly yes --port 6386
2、进入容器redis-node-1并为6台机器构建集群关系
1、进入容器
2、构建主从关系
进入docker以后执行以下命令:
redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1
--cluster-replicas 1 :表示为每个master创建一个slave节点
三台主节点
16384个hash槽全部分发完成
3、链接进入6381作为切入点,查看集群状态
2、主从容错切换迁移
1、主6381和从机切换,先停止主机6381
2、再次查看集群信息
3、重启6381
4、查看集群状态
重启后6381还是从机
3、主从扩容案例(三主三从变为四主四从)
1、新建 6387、6388两个节点+新建后启动+查看是否8节点
docker run -d --name redis-node-7 --net host --privileged=true -v /home/redis/share/redis-node-7:/data redis:latest --cluster-enabled yes --appendonly yes --port 6387
docker run -d --name redis-node-8 --net host --privileged=true -v /home/redis/share/redis-node-8:/data redis:latest --cluster-enabled yes --appendonly yes --port 6388
2、进入6387容器实例内部
3、将新增的6387节点(空槽号)作为master节点加入原集群
redis-cli --cluster add-node 自己实际的IP地址:6387 集群IP地址6381
4、检查集群情况第一次
5、重新分派槽号
redis-cli --cluster reshard IP地址:端口号 16384/4=4096 平均分配
6、检查集群情况第二次clear
三台master机器每台匀出一点组成4096
7、为主节点6387分配从节点6388
redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点id
new node added correctly
4、主从缩容(四主四从变为三主三从)
1、先清除节点6388
redis-cli --cluster del-node ip:从机port 从机节点id
2、清出来的槽号重新分配
清洗完后6387变为6381的从节点
3、再删除6387
4、恢复成3主3从