Redi缓存策略(五)

编程

Redis作为缓存,会碰到缓存雪崩、缓存穿透。

缓存雪崩

1、概念:缓存雪崩是指,缓存层出现了错误、宕机,或者同一时间大量的件在同一时间失效。于是所有的请求都会达到存储层,数据库的调用量会暴增,造成数据库也挂掉。

2:解决方案:

  • 高可用缓存层,redis的高可用,一主多从或者集群。
  • 使用互斥锁,根据key获取value值为空时,锁上,从数据库中load数据后再释放锁。

  • 设置缓存超时时间的时候加上一个随机的时间长度,比如这个缓存key的超时时间是固定的5分钟加上随机的2分钟,可从一定程度上避免雪崩问题;

缓存击穿

1、概念:缓存击穿表示恶意用户模拟请求很多缓存中不存在的数据,由于缓存中都没有,导致这些请求短时间内直接落在了数据库上,导致数据库异常。

2、解决方案:

  • 使用互斥锁,根据key获取value值为空时,锁上,从数据库中load数据后再释放锁。
  • 接口限流、熔断、降级
  • 布隆过滤器: bloomfilter就类似于一个hash set,用于快速判某个元素是否存在于集合中,其典型的应用场景就是快速判断一个key是否存在于某容器,不存在就直接返回。 ​​​​​​​

 

以上是 Redi缓存策略(五) 的全部内容, 来源链接: utcz.com/z/514428.html

回到顶部