Redis 集群是一个提供在多个 Redis 节点间共享数据的程序集。
Redis 集群并不支持处理多个 keys 的命令,因为这需要在不同的节点间移动数据,从而达不到像 Redis 那样的性能,在高负载的情况下可能会导致不可预料的错误.
Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。
Redis 集群的优势:
- 自动分割数据到不同的节点上。
- 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。
Redis 集群没有使用一致性 hash, 而是引入了哈希槽的概念。Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽,集群的每个节点负责一部分 hash 槽。
1、下载 redis.conf
下载地址:https://github.com/antirez/redis/blob/unstable/redis.conf
2、修改 redis.conf
开启集群功能:
设置节点端口:
节点超时时间,单位毫秒:
集群内部配置文件:
3、编写 docker-compose.yml
节点规划图如下:
配置如下:
4、编写 redis 默认的启动脚本
创建文件 config/redis.sh,内容如下:
5、启动集群
启动服务命令如下:
查看服务运行:
初始化集群(这一步开始命令须在 redis5.0 及以上版本运行)。
创建 3 主 3 从的 redis 集群:
输入 yes,确认要初始化:
查看初始化结果。
进入 redis-cli, 查看节点信息:
上图显示,redis 集群符合预期。
6、测试集群
普通模式连接:由于 test 根据哈希槽计算,是分布在 6392 服务上。所以这里会提示转到 6392。
集群模式连接:以下例子显示操作正常。
集群模式连接读写正常,集群搭建成功。