ToB企服应用市场:ToB评测及商务社交产业平台

标题: 缓存穿透,缓存雪崩,缓存击穿 [打印本页]

作者: 金歌    时间: 2022-6-23 17:12
标题: 缓存穿透,缓存雪崩,缓存击穿
缓存穿透,缓存雪崩,缓存击穿

本文整理自黑马程序员相关资料
缓存穿透

缓存穿透是指客户端请求的数据在缓存中和数据库中都部存在,这样缓存永远不会生效。因此这些请求都会穿过缓存,最终请求到数据库上,对数据库造成非常大的压力。
常见的解决方案有两种:
​        缓存穿透的其他解决方案:
缓存雪崩

缓存雪崩是指在同一时段大量缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,给数据库带来巨大压力。
解决方案:
缓存击穿

缓存击穿问题也叫热点key问题,就是一个高并发访问并且缓存重建业务比较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。
解决方案:
互斥锁:即只允许一个线程进行缓存重建,其他线程在缓存重建成功之前只能不断的重试。

逻辑过期:在热点key的value中设置逻辑过期时间,查询缓存的时候判断逻辑过期时间是否已经过期,如果已经过期,则获取互斥锁另开线程进行缓存重建。其他线程发现过期但获取互斥锁失败,返回过期数据。

两种解决方案的优缺点:
解决方案优点缺点互斥锁因为没有设置逻辑过期时间,所以没有额外的内存消耗。保持一致性。实现简单线程需要等待,性能受影响。可能有死锁风险逻辑过期线程无需等待,性能较好不保证一致性。有额外的内存消耗。实现复杂
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4