Redis06:Redis进阶部分

Redis配置文件详解

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

Redis持久化

Redis是内存数据库,如果不将内存中的数据状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供了持久化功能!

持久化之RDB操作

请添加图片描述
在这里插入图片描述
在这里插入图片描述

触发机制

  • save的规则满足的情况下,会自动触发rdb规则
  • 执行flushall命令,也会触发我们的rdb规则
  • 退出redis也会产生rdb文件
    备份就会自动生成一个dump.rdb文件

如何恢复rdb文件!

  • 只需要将rdb文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb文件,恢复其中的数据
    在这里插入图片描述

rdb优缺点

  • 优点

适合大规模的数据恢复!
对数据的完整性不高!

  • 缺点

需要一定的时间间隔进行操作!如果redis意外宕机了,这个最后一次修改数据就没有了!
fork进程的时候,会占用一定的内存空间!

持久化之AOF

AOF:将我们的所有命令都记录下来,history,恢复的时候就把这个文件全部在执行一遍
在这里插入图片描述

默认是不开启的,需要手动进行配置!,我们只需要将appendonly改为yes就开启了aof!

如果aof文件有错误,这个时候redis是启动不起来的,我们就需要修复这个aof文件
redis给我们提供了修复工具 redis-check-aof
在这里插入图片描述
如果文件正常,重启就可以直接恢复!

优缺点

  • 优点

每次修改都同步,文件的完整会更加好!
每秒同步一次,可能会丢失一秒的数据
从不同步,效率最高的!

  • 缺点

相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢
aof运行效率也要比rdb慢,所以我们redis默认的配置就是rdb持久化!

Redis发布订阅

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

订阅发布条件

  • 消息发送者
  • 频道
  • 消息订阅者
    在这里插入图片描述

命令

在这里插入图片描述

测试

  • 订阅端
192.168.184.135:6379> SUBSCRIBE kuangshenshuo #订阅一个频道kuangshenshuo
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "kuangshenshuo"
3) (integer) 1
1) "message" #等待推送的信息
2) "kuangshenshuo" #哪个频道的消息
3) "hello kuangshen" #发布后接收到的消息
1) "message"
2) "kuangshenshuo"
3) "hello redis"
  • 发布端
192.168.184.135:6379> PUBLISH kuangshenshuo "hello kuangshen" # 发布者发送消息到频道
(integer) 1
192.168.184.135:6379> PUBLISH kuangshenshuo "hello redis" # 发布消息
(integer) 1
192.168.184.135:6379> 

使用场景

  • 实时消息系统
  • 实时聊天!(频道当做聊天室,将信息回显给所有人即可)
  • 订阅,关注系统!
    稍微复杂的场景我们就会使用消息中间件MQ

Redis主从复制

主从复制,是值将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点,后者称为从节点
数据的复制是单向的,只能由主节点到从节点。主节点以写为主,从节点以读为主
在这里插入图片描述
主从复制,读写分离!80%的情况下都是在进行读操作!减轻服务器的压力!架构中经常使用!
在这里插入图片描述

环境配置

只配置从库,不用配置主库!
在这里插入图片描述

  • 集群搭建
    还需要修改dir文件夹目录
    在这里插入图片描述
    修改完毕之后,启动三个redis服务,可以通过进程进行查看
    在这里插入图片描述

主从复制之复制原理

  • 一主二从
    默认情况下,每台Redis服务器都是主节点我们一般情况下只用配置从机就好了!
    认老大!一主(79)二从(80 81)
    在这里插入图片描述
    真实的主从配置应该在配置文件中配置,这样的话就是永久的,我们这里使用的时命令,暂时的!
replicaof <masterip> <masterport> #主机ip和端口
masterauth <master-password> #主机密码

细节

主机可以写,从机不能写只能读!主机中的所有信息和数据,都会自动被从机保存
测试:主机断开连接,从机依旧连接到主机的,但是没有写操作,这个时候,主机如果回来了,从机依旧可以直接获取主机写的信息
如果是使用命令行,来配置的主从,这个时候如果重启了,就会变回主机!只要变为从机,立马就会从主机中获取值!
在这里插入图片描述

宕机后手动配置主机

层层链路模式:上一个M链接下一个S!,这个时候也可以完成主从复制!
在这里插入图片描述

如果主机断开了连接,我们可以使用slaveof no one让自己变成主机!其他节点就可以手动连接到最新的这个主节点(手动)

哨兵模式详解

主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人为干预,费时费力,还会造成一段时候内服务不可用。这不是一种推荐的方法,更多时候,我们优先考虑哨兵模式架构来解决这个问题。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试

  • 配置哨兵配置文件sentinel.conf
# sentinel monitor 被监控名称 host port 1 
sentinel monitor myredis 192.168.184.1 6379 1

后面的这个数字1,代表主机挂了,slave投票看让谁接替称为主机,票数最多的就会成为主机

  • 启动哨兵
./bin/redis-sentinel conf/sentinel.conf

在这里插入图片描述
如果Masteer节点断开了,这个时候就会从从机中随机选择一个服务器!(投票算法)
在这里插入图片描述

优缺点

在这里插入图片描述

Redis缓存穿透和缓存雪崩

缓存穿透(查不到)

缓存穿透的概念很简单,用户想要查询一个数据,发现Redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。
在这里插入图片描述

解决方案

  • 布隆过滤器
    在这里插入图片描述
  • 缓存空对象
    在这里插入图片描述

缓存击穿(量太大,缓存过期!)

缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿透缓存,直接请求数据,就像在一个屏障上凿开一个洞。
当某个key在过期的瞬间,有大量的请求并发访问,这类数据一般是热点数据,由于缓存过期,会同时访问数据库来查询最新数据,并且回写缓存,会导致数据库瞬间压力过大

解决方案

  • 设置热点数据永不过期
    从缓存层面来看,没有设置过期时间,所以不会出现热点key过期后产生的问题
  • 加互斥锁
    在这里插入图片描述

缓存雪崩

缓存雪崩,是指在某一个时间段,缓存集体过期失效。Redis宕机!
在这里插入图片描述

解决方案
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值