数据库面试题——redis缓存穿透缓存击穿与缓存雪崩
Posted _瞳孔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库面试题——redis缓存穿透缓存击穿与缓存雪崩相关的知识,希望对你有一定的参考价值。
缓存穿透
缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。
常用解决方案:
-
缓存空对象
- 优点:实现简单,维护方便
- 缺点:
- 额外的内存消耗:可以设置过期时间
- 可能造成短期的不一致:可能在空对象没过期的时候数据库中真的插入了该数据
-
布隆过滤:详情可见我的另一个博客:布隆过滤器详解
缓存击穿
缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。
常见的解决方案有两种:互斥锁与逻辑过期
缓存雪崩
缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。
解决方案:
- 给不同的Key的TTL添加随机值,避免key集中过期
- 利用Redis集群提高服务的可用性
- 给缓存业务添加降级限流策略
- 给业务添加多级缓存
如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔的个人空间
以上是关于数据库面试题——redis缓存穿透缓存击穿与缓存雪崩的主要内容,如果未能解决你的问题,请参考以下文章