创建6台redis
1 | 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 |
选择一个容器进入
1 | docker exec -it redis-node-1 /bin/bash |
创建集群
1 | redis-cli --cluster create \ |
输入 yes

选择进入一个redis
1 | redis-cli -p 6381 |
查看集群信息
1 | cluster info |

查看集群节点
1 | cluster nodes |

对应关系每次随机分配
1 — 5
2 — 4
3 — 6
集群操作读写
增加参数 -c,随便访问集群哪个节点
1 | redis-cli -p 6381 -c |
会自动切换到指定节点
1 | set k1 v1 |

1 | get k2 |

集群扩容
添加主节点
创建 6387
1 | docker run -d --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6387 |
加入集群,作为master
1 | redis-cli --cluster add-node 192.168.10.10:6387 192.168.10.10:6381 |
查看集群的状态
1 | redis-cli --cluster check 192.168.10.10:6381 |

没有槽好,需要分配
1 | redis-cli --cluster reshard 192.168.10.10:6381 |

填入 16383 / master 台数
第二个 new id 为 6387 的 id
重新检查 集群槽号
1 | redis-cli --cluster check 192.168.10.10:6387 |

结论: 重新分配的方式为,之前的所有节点,每个分配一部分给新的节点
添加从节点
1 | docker run -d --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6388 |
作为6387的从节点加入集群
1 | redis-cli --cluster add-node 192.168.10.10:6388 192.168.10.10:6387 --cluster-slave --cluster-master-id da57cde32e8696825235c6fe8ec80fc8cc3699d8 |
查看节点
1 | cluster nodes |

集群缩容
先删除从节点,再删除主节点
先删除 6388 后面为节点的id
1 | redis-cli --cluster del-node 192.168.10.10:6388 d520138203258effc8e0a5e92df579bfaa48266a |
先重新分配 6387 的槽号
1 | redis-cli --cluster reshard 192.168.10.10:6381 |

检查集群情况
1 | redis-cli --cluster check 192.168.10.10:6381 |

6387 的全给 6381了
1 | redis-cli --cluster del-node 192.168.10.10:6387 da57cde32e8696825235c6fe8ec80fc8cc3699d8 |

1 | redis-cli --cluster check 192.168.10.10:6381 |
