Redis缓存穿透和雪崩

缓存的目的是什么?

提高性能,缓存查询的速度比去数据库查询要快。

缓存会分担部分请求,减少并发压力。

 

那么缓存穿透是什么?怎么解决缓存穿透呢?

一般缓存系统,按key去查询value,如果不存在相应的Key,那么就会去数据库查询,如果key对应的value是一定不存在的,并且对key的并发查询很高,那么每次都会去数据库中查询,这就叫缓存穿透。

解决方法:

  • 添加过滤器,每次请求不合法,就不让请求数据库。
  • 当数据库中找不到对应的value,就将空对象设置到缓存中去。下次再请求的时候,就直接从缓存中获取。(注意,空对象也要设置过期时间)。

缓存雪崩是什么?怎么解决这个问题?

当缓存服务器重启或者大量缓存同一时间过期,就会导致这一时间很大的请求,都直接到达数据库。

解决方法:

  • 事发前,实现redis的主从架构,当redis失效后,从redis还能继续服务
  • 事发中,本地缓存加限流(锁或者消息队列)。
  • 事发后,redis持久化,快速重启。
  • 以及,为每一个key,设置一个随机的过期时间,让缓存失效的尽可能均匀点。

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值