redis缓存穿透和雪崩

♀尐吖头ヾ 提交于 2019-11-30 04:22:38

Redis缓存穿透和缓存雪崩解决方案

redis的缓存有哪些问题?一致性?击穿?雪崩等是如何解决的?

缓存穿透:是指查询一个一定不存在的数据。由于缓存命不中时会去查询数据库,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透。

解决方案:

1.是将空对象也缓存起来,并给它设置一个很短的过期时间,最长不超过5分钟​2.采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力

 

 

雪崩:如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,就会造成缓存雪崩。

解决方案:

   1.尽量让失效的时间点不分布在同一个时间点   2.保证缓存层服务的高可用,即使个别节点、个别机器、甚至是机房宕掉,依然可以提供服务,比如 Redis Sentinel 和 Redis Cluster 都实现了高可用。

 

缓存击穿:是指一个key非常热点,在不停的扛着大并发,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

解决方案:

   可以设置key永不过期
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!