redis(七) - redis 集群搭建

一、创建配置文件

1、创建一个 myredis 文件夹:

mkdir /myredis

2、复制一个原生的redis.conf 配置文件到myredis文件夹

cp /etc/redis.conf /myredis/redis.conf

3、在 myredis 文件夹中创建 9 个 redis 配置文件 :

由 redis + port.conf 表示不同 port 的配置文件

redis6379.conf
redis6380.conf
redis6381.conf
redis6382.conf
redis6383.conf
redis6384.conf
redis6385.conf
redis6386.conf
redis6387.conf

4、编辑配置文件

redis6379.conf :

include /myredis/redis.conf	--引用其它配置文件
port 6379		--端口
pidfile "/var/run/redis_6379.pid"	--pid文件
dbfilename "dump6379.rdb"	--日志文件名
cluster-enabled yes		--打开集群模式
cluster-config-file nodes-6379.conf		--设置节点配置文件名
cluster-node-timeout  15000  --设置节点失联时间(ms),超过该时间,集群自动切换主从节点

其它端口的配置文件与 redis6379.conf 类似,只需将其中的6379替换成相应端口即可

替换命令:

%s/6379/6380 --将6379替换为6380,其它配置文件类似

二、创建集群

1、启动所有redis服务

redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf
redis-server /myredis/redis6382.conf
redis-server /myredis/redis6383.conf
redis-server /myredis/redis6384.conf
redis-server /myredis/redis6385.conf
redis-server /myredis/redis6386.conf
redis-server /myredis/redis6387.conf

查看myredis中的文件,检查是否生成了所有的节点配置文件;如果没有相应的节点配置文件,则重启该节点的redis服务

redis(七) - redis 集群搭建_第1张图片
2、合并所有节点创建集群

2.1、进入redis的src文件夹

该文件夹是解压缩redis安装包时所得到的 redis-x.x.x 下的src文件夹

cd /opt/redis-6.2.6/src

2.2、执行合并命令

在src目录下查看是否有 redis-trib.rb 文件,如果没有需要自行安装(高版的redis自带 rb 环境,这里使用的是redis6)

redis-cli --cluster create --cluster-replicas 2 ip:port [ip:port…]

其中 2 表示一个节点中包含 1 个服务器以及 2 个从服务器;所以9个服务器则有3个节点,每个节点包含 1 个服务器以及 2 个从服务器

redis-cli --cluster create --cluster-replicas 2 192.168.117.130:6379 192.168.117.130:6380 192.168.117.130:6381 192.168.117.130:6382 192.168.117.130:6383 192.168.117.130:6384 192.168.117.130:6385 192.168.117.130:6386 192.168.117.130:6387

2.3、当出现询问时输入yes

Can I set the above configuration? (type 'yes' to accept): yes

三、连接集群

1、连接任意一个端口即可进入集群

redis-cli -c -p 6379

2、查看集群节点信息

cluster nodes

四、slots

  • 一个redis集群中包含 16384 个插槽(hash slot),数据库中的每个 key 都属于16384 中的一个。

  • 节点A负责处理0 - 5460号插槽,节点B负责处理5461 - 10922号插槽,节点C负责处理10923~16383号插槽

  • 当我们往redis集群中存数据时,集群通过公式 CRC16(key) % 16384来计算key应该属于那个插槽.然后将该key存入到对应插槽的节点中

通过 cluster nodes 命令可以查看每个节点所对应的插槽

在这里插入图片描述

  • 从上图可以看出 6379、6380、6381 作为主节点

  • (6383+6385)、(6386+6387)、(6382+6384)分别为 6379、6380、6381的从节点

  • 6379 负责处理0 - 5460号插槽

  • 6380负责处理5461 - 10922号插槽

  • 6381负责处理10923~16383号插槽

集群操作

1、在集群中同时插入一个值

如下图所示,执行 set test mytest 时,对 test 进行计算,它所对应的插槽为 6918 ,而 6918 由 80 节点负责,所以集群将此操作交给 80 节点执行,并将该key存入 80 节点
1、
2、在集群中同时插入多个值

redis集群无法通过常规的命令进行赋值
在这里插入图片描述
可以通过分组的方式添加多个值,即需要加上 " {} "

赋值:mset key{group} value [key{group} value …]

取值:mget key{group} [key{group}]
redis(七) - redis 集群搭建_第2张图片
3、计算 key 的插槽值

cluster keyslot key

在这里插入图片描述

你可能感兴趣的:(redis,redis)