目录

一、Redis集群简介

1.Redis集群(RedisCluster)

2 Redis集群搭建

2.1.删除持久化数据,aof、dump.

2.2.创建6个实例,即在/usr/local/myredis文件夹 下分别创建6379、6380、 6381、 6389、 6390、 6391的conf。

2.3.在redis.conf中关闭appendonly。

2.4.在不同的conf文件中,配置对应的内容

2.5.启动6个Redis,并确保是否全部生成nodes-xxxx。conf文件。(启动之前务必保证Redis服务支持远程连接)

6.进入Redis安装目录下的src文件夹

7.在该文件夹下执行命令

8.通过./redis-cli -C -p 6379可连接至集群(由于所有节点相通,任意端口号均可)

3 Redis集群操作

3.1 Slot

3.2命令执行

3.3故障恢复

1.Redis集群(RedisCluster)

RedisCluster实现了对Redis的水平扩容,即启动N个Redis节点,将整个数据库分布存储在这N个节点当中,每个节点存储总数据的1/N。

RedisCluster通过分区(partition) 来提供-定程度的可用性(availability) :即集群有一部分节点失效或者无法进行通讯,集群也可以继续处理命令。

Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接,用来交换彼此的信息。

为了使得集群在一部分节点宕机或者无法与集群的大多数节点进行通讯的情况下,仍然可以正常运作,Redis 集群对节点使用了主从复制功能。

2 Redis集群搭建

1.删除持久化数据,aof、dump.

2.创建6个实例,即在/usr/local/myredis文件夹 下分别创建6379、6380、 6381、 6389、 6390、 6391的conf。

3.在redis.conf中关闭appendonly。

4.在不同的conf文件中,配置对应的内容

  • 可以通过include /usr/local/myredis/redis.conf将公共基础配置直接引入文件。将include /usr/local/myredis/redis.conf统-添加到这三个文件中
  • 在各个文件中,添加对应的pidfile、port. dbfilename、 cluster-enabled (是否打开集群)、 cluster-config-file (设定节点配置文件名) . cluster-node-timeout (设置节 点失联时间,超过该时间(毫秒),集群自动进行主从切换)

如:

redis6379.conf中添加

pidfile /var/run/redis_6379.pid

port 6379

dbfilename dump6379.rdb

cluster-enabled yes

cluster-config-file nodes-6379.conf

cluster-node-timeout 15000

5.启动6个Redis,并确保是否全部生成nodes-xxxx。conf文件。(启动之前务必保证Redis服务支持远程连接)

6.进入Redis安装目录下的src文件夹

7.在该文件夹下执行命令

redis-cli --cluster create --cluster-replicas 1 192.168.56.101:6379 192.168.56.101:6380 192.168.56.101:6381 192.168.56.101:6389 192.168.56.101:6390 192.168.56.101:6391

切记:ip地址设自己当前虚拟机的ip地址

集群创建成功

8.通过./redis-cli -C -p 6379可连接至集群(由于所有节点相通,任意端口号均可)

在redis客户端中执行cluster nodes查看节点状态。

3 Redis集群操作

3.1 Slot

一个Redis集群包含16384个哈希槽(hashslot) , 每个键都属于这16384个哈希槽的其中一个。

集群使用公式CRC16(key) % 16384来计算键key属于哪个槽,其中CRC16(key)语句用于计算键key的CRC16校验和。

集群中的每个节点负责处理一部分哈希槽。 举个例子, -个集群可以有三个节点,其中:

●节点1负责处理0号至5500号哈希槽。

●节点2负责处理5501号至11000号哈希槽。

●节点3负责处理11001号至16384号哈希槽。

3.2命令执行

set k1 v1

根据k1计算出的槽值进行切换节点,并存入数据。

不在一个slot下的键值,是不能使用mget. mset等多建操作。

可以通过{}来定义组的概念,从而是key中{}内相同内容的键值对放到同一个slot中

mset k1{test} v1 k2{test} v2 k3{test} v3

3.3故障恢复

1.关闭6379服务器,进入redis-cli执行cluster nodes

6379服务器fail, 6390成为了新的master

2.重新启动6379服务器,再次查看,6379成为了Slave

好了,今天的分享就到此结束了,希望可以对您有帮助!以上内容为本人的经验总结和平时操作的笔记。若有错误和重复请联系作者删除!!感谢支持

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐