文章插图
缓存穿透介绍:当查询一个不存在的数据 , 此时缓存是不命中的 , 就会去查询 db , 这将导致每次查询这个不存在的数据都要去访问 db , 缓存就没有意义了 。
如果不怀好意的人利用不存在的数据进行攻击 , 可能导致数据库崩溃
解决:
- 查询到的不存在的数据也放入缓存 , 可以存为 null , 并加入短暂的过期时间;但如果别人每次都请求一个不同的 key , 会导致大量无用 key 存在 redis 中 。
- 在 redis 和 db 间加个过滤器(比如布隆过滤器) , 过滤不存在的 key
解决:
- 在原有的失效时间基础上加上一个随机值 , 比如 1~5 分钟 , 这样每一个缓存过期时间的重复率就会变低 , 就很难引起集体失效的事件 。
【高并发系统下,常见的几种缓存失效问题及解决方案】解决:
- 加锁 。大量并发只让一个去查 , 其他人等待 , 查到以后释放锁 , 其他人获取到锁 , 先查缓存 , 就会有数据 , 不用去db
- 在 redis、db 中间做一个二级缓存
推荐阅读
- 淘宝店铺转化率是什么意思 提高淘宝网店转化率的要点有哪些
- 和珅|职场上,情商越高的人,越能做到以下几点
- 穿衣搭配|小宋佳的穿搭,好看又高级洋气,跟着学穿搭气场都翻倍
- Fping - 高性能Ping工具
- 桃子和苹果哪个热量高
- 怎么提高淘宝店铺访客量和流量 提高淘宝店铺流量和成交量的方法
- 淘宝刷点击率有用吗 新开的淘宝店铺怎样提高点击率
- 超级推荐如何提高转化 超级推荐点击率很低怎么办
- 请问在淘宝推荐赚佣金是什么意思 推广什么佣金高
- 淘宝点击率的计算公式是什么 淘宝点击率怎么提高