zoukankan      html  css  js  c++  java
  • 缓存穿透 缓存雪崩 缓存并发

    参考连接:https://segmentfault.com/a/1190000005886009

    缓存穿透:查询一个不存在的数据时,缓存和存储层都不会命中,由于存储层查不到数据则不写入缓存,所以每次查询都会到存储层查询从而缓存失去了其存在的意义。

    如何避免:

    • 对查询为空的情况也进行缓存,只不过设置一个较短的缓存时间。
    • 把所有可能存在的key放到一个大的bitmap中,查询时通过该bitmap过滤。  

    缓存雪崩:发生缓存穿透时或者缓存失效后,Storage层的调用量暴增从而使Storage也挂掉。

    如何避免:

    • 通过加锁或者队列控制数据库读写缓存的线程数量。

    缓存并发:当网站并发比较高时,可能存在多个线程/进程同时查询数据库,同时设置缓存的情况。这可能会造成Storage层压力过大,或者缓存频繁更新的问题。

    如何避免:

    • 对缓存查询进行加锁:当key不存在时,对缓存加锁,然后查询数据库,其他进程等待解锁后查询缓存或者数据库。
  • 相关阅读:
    7-1 抓老鼠啊~亏了还是赚了?
    7-1 币值转换
    7-1 打印沙漏
    打印沙漏
    第十周作业
    第九周作业
    第八周作业
    第七周作业
    7-1 判断上三角矩阵 (15 分)
    第二次实验过程
  • 原文地址:https://www.cnblogs.com/jiangtu/p/5950539.html
Copyright © 2011-2022 走看看