redis发布订阅、主从复制、缓存穿透、缓存雪崩、缓存击穿

1、redis发布订阅

角色: 发送者 、 订阅者

定义:发送者发送消息,订阅者接受消息

命令
subscribe channel # 订阅一个频道 channel
publish channel "hello,world" # 发布者发布消息到指定频道
应用:
  • 聊天室
  • 微信公众号文章的发布
  • 实时提醒

2、redis主从复制

  • 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。
  • 前者称为主节点
    (master/leader),后者称为从节点(slave/follower);
  • 数据的复制是单向的,只能由主节点到从节点
  • Master以写为主,Slave 以读为主。

注意:

  • 默认情况下,每一台redis都是主节点
  • 主机可以写,从机不能写只能读!主机中的所有信息和数据,都会自动被从机保存!
  • 一个主节点可以有很多从节点,但是从节点只能有一个主节点
  • 要将redIs运用在项目中,只有一台redis时不能宕机
作用:
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现故障恢复;
  • redis用作存储缓存,单台Redis最大使用内存不应该超过20G。

3、哨兵( Sentinel)模式

1.为什么要使用哨兵模式?

redis的主从复制下,一旦主节点故障不能提供服务时,需要人工将从节点提升为主节点,并通知应用方更新主节点的地址。 使用Sentinel机制完成动态选举,避免人工更新。

2.作用:
  • 监控redis集群中master主服务器的工作状态
  • 在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用
  • 当一个master不能正常工作时,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;
3.优点:
  • 主节点和从节点可以切换,解决系统故障
  • 哨兵是基于主从复制模式,即包含主从复制的所有优点
4.缺点
  • 扩容麻烦,集群容量一旦上限,在线扩容麻烦
  • 配置哨兵过程繁杂

4、redis缓存穿透和雪崩

1、缓存穿透(查不到数据)
定义:

按照key值在缓存中查询对应的value,缓存的value值为空,大量并发数据访问DB

产生原因:
  • 黑客恶意的攻击,造成数据库压力过大
解决方案:
  • 布隆过滤器

将所有可能查询的参数以hash形式存储,在控制层进行校验,不符合的数据丢弃,从而避免无用和请求数据的干扰

  • 缓存空对象

将返回的空对象缓存起来,同时会设置一个过期时间,之后再访问这个数据将会从缓存中获取,保护了后端数据源

2、缓存雪崩
定义:

在某个时间段,缓存集中过期失效,缓存失效时,大量的数据会直接访问db(数据库),此时,造成数据库压力过大。

解决方案:
  • redis 高可用

多设置几台redis,当其中一台宕机后其他还可以继续工作。(搭建redis集群)

  • 限流降级

在缓存失效后,通过加锁或者队列来控制数据库写缓存的线程数量(当其他key只允许一个线程查询数据和写缓存,其他线程等待)

3、缓存击穿(数据量太大,造成缓存过期)
定义:

一个key非常热点,访问非常频繁,处于集中式高并发访问的情况,当这个key在失效的瞬间,大量的请求就会击穿缓存,直接请求数据库。

解决方案:
  • 将热点数据设置永不过期
  • 加互斥锁(使用分布式锁,保证对于每个key同时只有一个线程去查询后端服务,其他线程没有获得分布式锁的权限,因此只需要等待即可)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值