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

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

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

    如何避免:

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

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

    如何避免:

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

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

    如何避免:

    • 对缓存查询进行加锁:当key不存在时,对缓存加锁,然后查询数据库,其他进程等待解锁后查询缓存或者数据库。
  • 相关阅读:
    流程控制之while循环
    流程控制之if...else
    基本运算符
    基本数据类型
    注释
    用户交互
    常量
    test
    查询方法
    删除代码
  • 原文地址:https://www.cnblogs.com/jiangtu/p/5950539.html
Copyright © 2011-2022 走看看