- 键的批量操作支持有限,比如 mset, mget 命令,如果多个键映射在不同的槽中,就不能正常使用这些命令了;
Redis 群集配置参数
我们即将创建一个示例集群部署。在继续之前,让我们介绍Redis Cluster在redis.conf文件中引入的配置参数。
-
cluster-config-file: 设置 Redis 集群配置信息及状态的存储位置,该文件由 Redis 集群生成,我们只能指定其存储的位置。
-
cluster-node-timeout: 设置 Redis 群集节点的通信的超时时间;
-
cluster-migration-barrier: 主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移。
-
cluster-enabled: 是否开启 Redis 集群模式。
-
yes:启用 Redis 群集;
-
no:不启用集群模式;
-
cluster-require-full-coverage: 设置集群可用性。
-
yes:表示当负责一个插槽的主库下线,且没有相应的从库进行故障恢复时,集群不可用,下面论证该情况。
-
no:表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群仍然可用,下面论证该情况。
-
cluster-slave-validity-factor:
-
0:则无论从节点与主节点失联多久,从节点都会尝试升级成主节点。
-
正数:则
cluster-node-timeout
*
cluster-slave-validity-factor
得到的时间,是从节点与主节点失联后,此从节点数据有效的最长时间,超过这个时间,从节点不会启动故障迁移。假设cluster-node-timeout=5
,cluster-slave-validity-factor=10
,则如果从节点跟主节点失联超过50秒,此从节点不能成为主节点。
六、Docker 部署 Redis 集群
1、Redis 部署机器分配
这里对待部署的 Redis 集群的节点进行分配,将其部署到不同的机器上,安排如下:
2、创建数据存储目录
提前创建好用于存储 Redis 的配置文件和持久化数据的目录:
第一台服务器 192.168.2.11
中执行创建存储目录命令:
$ mkdir -p /var/lib/redis/7000 & mkdir -p /var/lib/redis/7003
第二台服务器 192.168.2.12
中执行创建存储目录命令:
$ mkdir -p /var/lib/redis/7001 & mkdir -p /var/lib/redis/7004
第三台服务器 192.168.2.13
中执行创建存储目录命令:
$ mkdir -p /var/lib/redis/7002 & mkdir -p /var/lib/redis/7005
3、创建 Redis 配置文件
第一台服务器 192.168.2.11
配置文件:
## 7000 端口配置文件
$ cat > /var/lib/redis/7000/redis.conf << EOF
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize no
protected-mode no
pidfile /data/redis.pid
EOF
## 7003 端口配置文件
$ cat > /var/lib/redis/7003/redis.conf << EOF
port 7003
cluster-enabled yes
cluster-config-f