首页 > 架构设计 > 缓存穿透及雪崩的办法

缓存穿透及雪崩的办法

2017年3月31日 发表评论 阅读评论

方法一 空对象
增加空对象,查询缓存没有命中,查询数据库时候,没有该值,那么新增一个空对象到缓存中

要点:
缓存对象必须有过期时间,不然在这个key生成时候会导致数据不一致
业务场景允许一定的不一致情况的存在
方法二 布隆过滤器拦截
首先将查询到的数据落到布隆过滤器中,在查询时候先查询布隆过滤器,若是存在,查询缓存,缓存不存在,查询数据库到缓存中。若不存在布隆过滤器中的话,不查询数据库

要点:
第一次可以全量构建,但是后续增量数据的处理会较为麻烦,因为这个里面涉及到几个问题
1.分布式情况下的布隆过滤器是作为localcache,需要解决如何全量的更新
2.若是作为全局缓存的话,那么注意的是分布式更新的问题。
缓存雪崩的办法

可靠性:依赖服务做降级
可用性:将缓存作成高可用,考虑容错,例如Redis Sentinel 和 Redis Cluster
隔离性:将缓存作隔离,部分击穿不会影响所有的数据

解决并发更新的手段

1.分布式锁

2.缓存永不过期,然后通过后台线程定时更新

分类: 架构设计 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.