Redis集群

概述

  1. Redis集群实现了对Redis的水平扩容,即启动N个Redis节点,将整个数据库分布式存储在这N个节点中,每个节点存储数据的1/N
  2. 优点:
    (1)实现扩容、分摊压力
    (2)无中心配置相对简单
  3. 缺点:
    (1)多键操作是不被支持的
    (2)多键的Redis事务是不被支持的,lua脚本不支持

搭建集群

  1. myredis文件夹中创建6个配置文件,并填入一下内容,然后根据6个redis配置文件,启动6个redis服务器
    在这里插入图片描述
include /home/dl/myredis/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"
# 后续的3条指令是集群需要的
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
  1. 启动后会在myredis文件夹中生成6个node-xxx.conf文件
    在这里插入图片描述

  2. 将6个redis服务器合成一个集群:
    (1)进入安装文件夹的src目录下:
    在这里插入图片描述
    (2)执行以下命令创建集群(必须在src下的目录中执行)

redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6389 127.0.0.1:6390 127.0.0.1:6391
  1. --cluster-replicas 1表示1主1从模式

在这里插入图片描述4. 使用集群策略连接,设置数据会自动切换到相应的写主机:

redis-cli -c -p 6379

在这里插入图片描述
在这里插入图片描述

  • slots
  1. 一个Redis集群包含16384个插槽(hash slots),数据库中的每个键都属于这16384个插槽的其中一个
  2. 集群使用公式CRC(key) % 16384来计算键key属于哪个槽,其中CRC16(key)语句用于计算键key的CRC16校验和
  3. 集群中的每个节点负责一部分插槽
    在这里插入图片描述

集群的使用

  • 插入操作:
  1. 即使是在服务器6389中插入的,但是通过计算插槽为127066381这个主机使用,因此会将键插入6381服务器中
    在这里插入图片描述
  2. 无法在同一条语句中插入多个key-value,可以使用分组的方式完成

在这里插入图片描述在这里插入图片描述

  • 查询插槽的值:
  1. cluster keyslot <key>查询插槽值

在这里插入图片描述

  1. 计算插槽中的键的数目:
    (1)12706不属于6380服务器管理,因此无法进行查询

在这里插入图片描述
在这里插入图片描述

故障恢复

  1. 若主机挂掉后,从机是能够自动升为主服务器:

在这里插入图片描述
2. 原主机再次启动后,会成为新主机(原从机)的从机
在这里插入图片描述
3. 若某一插槽段的主机和从机都挂掉了,此时分为两种情况:
(1)若cluster-require-full-converage为yes,则整个集群都挂掉了
(2)若cluster-require-full-converage为no,则该插槽数据全部不能使用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_46427273

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值