常用知识点问答

目录

redis的三大缓存问题

缓存雪崩解决方案

缓存穿透解决方案

缓存击穿解决方案

集群怎么工作的?

主从复制、哨兵模式、集群模式的区别?

redis主从复制流程

哨兵原理


redis的三大缓存问题

  • 正常情况下,大部分的访问请求应该是先被redis响应的,在redis那里得不到响应的小部分访问请求才会去请求MySQL数据库获取数据,这样MySQL数据库的负载压力是非常小的,且可以正常工作。
  • 缓存雪崩/穿透/击穿问题的根本原因在于redis缓存命中率下降,大量请求会直接发给MySQL数据库,导致MySQL数据库压力过大而崩溃。
  1. 缓存雪崩:redis中大量不同的缓存key集体过期
  2. 缓存穿透:大量请求访问redis和MySQL数据库都不存在的资源
  3. 缓存击穿:redis中一个热点key过期,此时又有大量请求访问这个热点key

缓存雪崩解决方案

  • 使用随机数设置key的过期时间,防止集群过期
  • 设置二级缓存
  • 数据库使用排他锁,实现加锁等待

缓存穿透解决方案

  • 对空值也进行缓存
  • 使用布隆过滤器进行判断拦截一定不存在的无效请求
  • 使用脚本实时监控,进行黑名单限制

缓存击穿解决方案

  • 设置永不过期
  • 预先对热点数据进行缓存预热
  • 数据库使用排他锁,实现加锁等待

集群怎么工作的?

  • 先用crc16算法对键进行计算。得到一个数字,然后对这个数字除以16384取余数,得到键的hash槽,自动跳转到hash槽所在的节点进行数据的操作

主从复制、哨兵模式、集群模式的区别?

  • 主从复制可以实现数据的备份,读的负载均衡,但是无法自动故障恢复,哨兵可以实现主节点故障的自动恢复;哨兵无法解决写的负载均衡,而集群模式可以解决(集群是多个组,可以相互跳转进行负载均衡的写入);为什么能解决单机存储的问题,集群通过数据分片的方式,将数据分散存储在各个节点充分利用每个节点的空间

#redis集群端口号16379;26379哨兵端口号;redis6379;

redis主从复制流程

  1. 首次同步:当从节点要进行主从复制时,它会发送一个SYNC命令给主节点。主节点收到SYNC命令后,会执行BGSAVE命令来生成RDB快照文件,并在生成期间使用缓冲区记录所有写操作。
  2. 快照传输:当主节点完成BGSAVE命令并且快照文件准备好后,将快照文件传输给从节点。主节点将快照文件发送给从节点,并且在发送过程中,主节点会继续将新的写操作缓冲到内存中。
  3. 追赶复制:当从节点收到快照文件后,会加载快照文件并应用到自己的数据集中。一旦快照文件被加载,从节点会向主节点发送一个PSYNC命令,以便获取缓冲区中未发送的写操作。
  4. 增量复制:主节点收到PSYNC命令后,会将缓冲区中未发送的写操作发送给从节点,从节点会执行这些写操作,保证与主节点的数据一致性。此时,从节点已经追赶上了主节点的状态。
  5. 同步:从节点会继续监听主节点的命令,并及时执行主节点的写操作,以保持与主节点的数据同步。主节点会定期将自己的操作发送给从节点,以便从节点保持最新的数据状态.

哨兵原理

  • 1每个哨兵都会定时探测主节点、从节点、及其它哨兵节点的运行状态
  • 当哨兵节点探测主节点异常,则认为主节点主观下线
  • 当超过指定数量的哨兵节点认为主节点主观下线,则认定主节点客观下线
  • 哨兵节点会通过raft算法选举出leader,再由leader负责故障转移和通知
  • 将一个从节点提升为新的主节点,让其它从节点指向新的主节点做主从复制
  • 写VIP也会漂移到新的主节点上
  • 原主节点恢复后也会自动变成从节点指向新的主节点做主从复制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值