如何解决 Redis 缓存穿透和缓存雪崩问题?

如何解决 Redis 缓存穿透和缓存雪崩问题?,第1张

如何解决 Redis 缓存穿透和缓存雪崩问题?

缓存雪崩: 由于缓存层承载着大量请求,有效地 保护了存储层,但是如果缓存层由于某些原因不能提供服务,比如 Redis 节点挂掉了,热点 key 全部失效了,在这些情况下,所有的请求都会直接请求到数据库,可能会造成数据库宕机的情况。

预防和解决缓存雪崩问题,可以从以下三个方面进行着手:

1、使用 Redis 高可用架构:使用 Redis 集群来保证 Redis 服务不会挂掉

2、缓存时间不一致: 给缓存的失效时间,加上一个随机值,避免集体失效

3、限流降级策略:有一定的备案,比如个性推荐服务不可用了,换成热点数据推荐服务

缓存穿透: 缓存穿透是指查询一个根本不存在的数据,这样的数据肯定不在缓存中,这会导致请求全部落到数据库上,有可能出现数据库宕机的情况。

预防和解决缓存穿透问题,可以考虑以下两种方法:

1、缓存空对象: 将空值缓存起来,但是这样就有一个问题,大量无效的空值将占用空间,非常浪费。

2、布隆过滤器拦截: 将所有可能的查询key 先映射到布隆过滤器中,查询时先判断key是否存在布隆过滤器中,存在才继续向下执行,如果不存在,则直接返回。布隆过滤器有一定的误判,所以需要你的业务允许一定的容错性。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4878847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-11
下一篇 2022-11-11

发表评论

登录后才能评论

评论列表(0条)

保存