redis案例

redis案例

记录遇到过redis案例

发布订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
Redis 客户端可以订阅任意数量的频道。

  1. 客户端可以订阅频道如下图
    在这里插入图片描述
  2. 当给这个频道发布消息后,消息就会发送给订阅的客户端
    在这里插入图片描述
    实现
    三台不同ip的虚拟机,其中两台作为192.168.3.106的客户端
    命令如下:
    在这里插入图片描述

数据恢复

RDB数据恢复

开启RDB保存策略
在这里插入图片描述
表示 30秒内,key值修改10次 触发一次RDB快照
测试前删除原有的dump.rdb文件 rm -rf dump.rdb
重启服务器,启动redis,并进入客户端
在这里插入图片描述
此时数据为空
进行数据插入操作
在这里插入图片描述
插入13条数据,触发保存策略生成rdb文件
在这里插入图片描述
关闭redis,对dump.rdb文件改名mv dump.rdb dump.rdb.bp
此时没有dump.rdb文件 重启redis
在这里插入图片描述
没有任何数据,关闭redis再将dump.rdb.bp改回dump.rdb,再次启动redis,再次查看
在这里插入图片描述
注意:rdb会照成数据丢失,如果数据敏感不建议采用此方式持久化。

AOF数据恢复

步骤和RDB大同小异,如果AOF文件没有损坏怎复制aof文件到对应目录,重启redis即可
如果aof损坏通过redis-check-aof修复aof文件。
先开启aof持久化:在配置文件中修改appendonly yes appendfsync always
插入数据:
在这里插入图片描述
关闭redis查看aof文件,并对该文件进行修改,手动损坏该文件
在这里插入图片描述
在重新启动redis,发现启动出现问题,客户端无法连接
在这里插入图片描述
修复aof文件
/usr/local/bin/redis-check-aof --fix appendonly.aof
在这里插入图片描述
重启redis
在这里插入图片描述
此时数据恢复

集群模式搭建

集群搭建

redis-cli --cluster命令
crate 创建集群
call: 可以执行redis命令
add-node: 将一个节点添加到集群里面,第一个参数为新节点的ip:port ,第二个参数为集群中任意一个已存在的节点的 ip:port
del-node: 集群中存活的某个一个节点的ip:port 要删除节点的id (删除的节点必须把槽迁移)
reshard:集群中存活的某个一个节点的ip:port (针对的是整个集群,而不是填写的节点)
check:检查集群状态

水平扩容

集群扩容一主一从作为案例,未搭建集群的先看上面的集群搭建,本次集群案例采用集群搭建上的案例。
准备
已有集群
在这里插入图片描述
和两台redis服务器 分别为192.168.3.112 、192.168.3.113 。
步骤

  1. 修改需要添加的两台redis服务器的配置文件 redis.conf
    主要修改集群配置、持久化配置,这些基础配置不在赘述

  2. 正常启动这两个redis

  3. 添加节点到集群中
    添加112到集群中:src/redis-cli --cluster add-node 192.168.3.112:6379 192.168.3.106:6379
    第一个ip:port 是需要添加的节点信息 第二个是集群中存活的ip信息
    在这里插入图片描述
    同理添加113:src/redis-cli --cluster add-node 192.168.3.113:6379 192.168.3.106:6379
    连接任意一个集群客户端,查看集群节点信息
    在这里插入图片描述
    可以看到112 113已经添加到集群中了,默认为master 但是是没有分配槽的,此时新添加的两个节点服务还不可用。

  4. 为新节点分配槽
    为112分配槽:src/redis-cli --cluster reshard 192.168.3.12:6379
    在这里插入图片描述
    然后询问要分配多少个槽
    在这里插入图片描述
    How many slots do you want to move (from 1 to 16384)? 询问要移动多少个槽 案例输入2000
    What is the receiving node ID? 要移动的id 案例给新增加的节点添加槽 输入增加的节点的id
    Please enter all the source node IDs.
    Type ‘all’ to use all the nodes as source nodes for the hash slots. 是否将其它主节点的槽平均分配给目标节点 是的话输入all
    Type ‘done’ once you entered all the source nodes IDs. 从输入的id节点中分配 完成后输入done结束分配 案例采用这个模式
    Do you want to proceed with the proposed reshard plan (yes/no)? 是否按照这个列表分配 输入yes
    分配槽的过程会进行阻塞,槽分配之后 槽对应的数据也会迁移
    先查看节点信息
    在这里插入图片描述
    到此主节点添加完成

  5. 添加从节点
    任何新添加的节点都默认为主节点
    src/redis-cli -c -h 192.168.3.113 -p 6379 将113作为112的从节点
    cluster replicate 主节点id9(也就是112节点的id)
    cluster replicate 7c4bb890c8afbe7d9031c30e9a44d8f6e5589e82
    在这里插入图片描述
    这样从节点就配置好了
    查看节点信息
    在这里插入图片描述
    到此一主一从配置完成

水平缩容

本次以删除水平扩容案例中,新增的两个节点为案例
删除从节点
通过del-node 删除节点
src/redis-cli --cluster del-node 192.168.3.106:6379 d8daf4f5a906c0404c6d52c438908ae4795bb0e4
第一个ip:port 为及群众存活的任意一个节点信息
后面跟着的是要删除的节点id
在这里插入图片描述
查看节点信息
在这里插入图片描述
发现113节点已经不存在
删除主节点
先将需要删除的主节点的槽迁移到其他主节点上
在这里插入图片描述
查看节点信息
在这里插入图片描述
112没有了槽
然后通过del-node 删除节点
src/redis-cli --cluster del-node 192.168.3.106:6379 7c4bb890c8afbe7d9031c30e9a44d8f6e5589e82
在这里插入图片描述
到此完成缩容

集群数据恢复

集群中当一个主节点挂掉,该主节点的从节点就会成为主节点。
例如在这里插入图片描述
106为主节点,110为106的从节点,106宕机后
在这里插入图片描述
110为主节点,数据不会丢失
在这里插入图片描述
一般来说只要重启106就可以,问题不大。
如果一主一从都宕机了
在这里插入图片描述
显示整个集群都down了。这个和redis.conf的配置参数有关
如果某一段插槽的主从都挂掉,而cluster-require-full-coverage 为yes ,那么 ,整个集群都挂掉
如果某一段插槽的主从都挂掉,而cluster-require-full-coverage 为no ,那么,该插槽数据全都不能使用,也无法存储。
数据恢复
如果是集群宕机,需要重新创建新的集群,保证之前的槽和新创建的集群的槽是一致的,否则会导致部分数据丢失。将旧集群的持久化文件复制到新集群对应的主节点就好,这和数据迁移类似,数据迁移也是如此

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值