docker redis
单机:
docker run -d -p 6379:6379 --name redis7 --privileged=true
-v /home/app/redis/redis.conf:/etc/redis/redis.conf
-v /home/app/redis/data:/data redis:7.0.0
redis-server /etc/redis/redis.conf
存储方案;
1.哈希取余分区
2.哈希槽分区 16384
集群配置:
创建集群容器
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
--cluster-enabled yes -----开启集群
--appendonly yes -----开启持久化
配置集群关系
docker exec -it redis-node-1 /bin/bash
redis-cli --cluster create 192.168.0.11:6381 192.168.0.12.147:6382 192.168.0.13:6383 192.168.0.14:6384 --cluster-replicas 1
--cluster-replicas 1 表示为每个master创建一个slave节点
查看节点状态
redis-cli -p 6381
cluster info
cluster nodes
防止路由失效加参数-c : redis-cli -p 6381 -c
查看集群信息: redis-cli --cluster check 192.168.0.11:6381
主从扩容:
docker exec -it redis-node-5 /bin/bash
redis-cli --cluster add-node 192.168.0.15:6385 192.168.0.11:6381 -- 将新增的6387作为master节点加入集群
重新分配哈希槽(前几个每组分配一点到新的节点)
redis-cli --cluster reshard 192.168.0.11:6381
给redis-node-5分配新的从节点
公式:redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID
例如:redis-cli --cluster add-node 192.168.0.16:6386 192.168.0.15:6385 --cluster-slave --cluster-master-id e4781f644d4a4e4d4b4d107157b9ba8144631451(node-5的节点ID )
主从缩容:
1.先删除从机
公式:redis-cli --cluster del-node ip:从机端口 从机6388节点ID
例子:redis-cli --cluster del-node 192.168.0.16:6386 e4781f644d4a4e4d4b4d107157b9ba8144631451
2.重新分配哈希槽
redis-cli --cluster reshard 192.168.0.11:6381
3.删除主机