【Redis】——集群部署

1. 集群解决的问题

  1. 容量不够问题
  2. 并发写操作压力问题
  3. 无中心化集群配置

2.集群概念

  1. Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个redis节点中,每个节点存储总数据的1/N。
  2. Redis集群通过分区(partition)来提供一定程度的可用性(availability),即使集群中有一部分节点失效或无法通讯,集群也可以继续处理命令请求

3. 删除持久化数据

将整个rdb.aof 文件都删除掉。

4. 集群搭建

<1>制作六个实例

主服务器:6379从服务器:6389
主服务器:6380从服务器:6390
主服务器:6381从服务器:6391

<2>配置文件

include /myredis/redis.conf
pidfile "/var/run/redis_6379.pid"
port 6379
dbfilename "dump6379.rdb"
#打开集群
cluster-enabled yes
#设定节点配置文件名
cluster-config-file nodes-6379.cinf
#设定节点失联时间,超过该时间(毫秒),集群自动进行主从切换
cluster-node-timeout 15000

在这里插入图片描述

<3>启动六台redis服务器

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

<4>将六个节点合成一个集群

1. 前提

组合之前,确保六个redis实例启动后,nodes-xxxx.onf文件都正常生成。

2. 命令:

ifconfig 查看本机ip地址
cd /opt/redis-6.2.6/src
redis-cli --cluster create --cluster-replicas 1 10.0.24.3:6379 10.0.24.3:6380 10.0.24.3:6381 10.0.24.3:6389 10.0.24.3:6390 10.0.24.3:6391

3. 说明

-replicas 1 采用最简单的方式配置集群,一台主机,一台从机,正好三组
不能使用127.0.0.1 ,要使用正式IP地址

4. 执行结果

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

<5>集群操作

1. 集群连接

可以用任意一个节点
redis-cli -c -p 6379

2. 查看集群信息

cluster nodes
在这里插入图片描述

5. redis cluster 节点分配

一个集群,至少三个主节点
选项 – cluster-replicas1 表示我们希望为集群的每个节点创建一个从节点。
分配原则尽量保证每个主数据库运行在不同的ip地址,每个从库和主库不在一个ip地址。

6. slots

在这里插入图片描述

  1. 一个Redis集群包含16384个插槽(hashslots),数据库中每个键都授予这16384个插槽的其中一个。
  2. 集群使用公式CRC16(key) % 16384 来计算key数据那个槽,其中CRC16(key)语句用于计算键key的CRC16校验和。
  3. 集群中的每个节点负责处理一部分插槽
    在这里插入图片描述
  4. 演示
    在6379中set key value ,但是通过计算,slot 在6381节点上,于是切 换到6381 再进行插入操作
    在这里插入图片描述

7. 故障恢复

<1>当主服务器宕机之后,从服务器会成为主服务器
在这里插入图片描述
在这里插入图片描述
<2>当宕机的主服务器恢复之后,会作为从服务器
在这里插入图片描述

<3>如果一段槽点的主从服务器都宕机
如果 cluster-require-full-coverage 为yes,则整个集群都宕机
如果 cluster-require-full-coverage 为no,则该段数据全都不能使用,也无法存储
redis.conf中的参数 cluster-require-full-coverage

8. 优缺点

<1> 优点

实现扩容
分摊压力
无中心配置,相对简单

<2> 缺点

多键操作不被支持
多键的redis事务不被支持,lua脚本不被支持
由于集群方案出现比较晚,很多公司已经采用了其他的解决方案,而代理或者客户端分片的方案想要迁移至redis cluster ,需要整体迁移而股市逐步过度,复杂度较大

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值