博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
缓存穿透 缓存雪崩 缓存并发
阅读量:4351 次
发布时间:2019-06-07

本文共 467 字,大约阅读时间需要 1 分钟。

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

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

如何避免:

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

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

如何避免:

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

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

如何避免:

  • 对缓存查询进行加锁:当key不存在时,对缓存加锁,然后查询数据库,其他进程等待解锁后查询缓存或者数据库。

 

转载于:https://www.cnblogs.com/jiangtu/p/5950539.html

你可能感兴趣的文章
EMC队列 发件人为空 From Address: <>
查看>>
多路复用IO模型 IO multiplexing
查看>>
监控系统信息模块psutil
查看>>
python tokenizer
查看>>
【兼容性】IE不支持日期字符串转换为日期对象
查看>>
笔试编程---快手实习题目
查看>>
csp20170304地铁修建_Solution
查看>>
Palindromic Substrings
查看>>
改变和恢复view的方向
查看>>
C#调用金数据API
查看>>
Convert Sorted List to Binary Search Tree
查看>>
Leetcode:Unique Binary Search Trees
查看>>
D3.js 绘制散点图
查看>>
《图解HTTP》
查看>>
python之路_面向对象
查看>>
CSS
查看>>
jvm架构以及Tomcat优化
查看>>
数据库の目录
查看>>
vmware安装rhel 7
查看>>
[复合材料] 编织复合材料单胞周期性边界条件编程问题
查看>>