工作中经常会用到redis来做缓存,以防止后台db挂掉。但是db数据一般都在10T以上,不可能把mysql中的数据全部放入redis中,所以一般是将一些热key放入redis中。

缓存击穿

一个请求先去redis中查询数据,如果存在则返回,不存在则去mysql中读取,然后回写到redis中,然后配上过期时间。这大概是redis最典型的用法了。但是如果某个时刻大量key的请求都没有命中缓存,那么这些大量请求就会全部落到mysql中,导致mysql压力过大。这个场景就是典型的缓存击穿。缓存击穿只需要把mysql数据会写到redis中就能得到解决。还有就是在配置过期时间的时候最好使用随机时间,否则大量的热key在同一时间过期,还是会周期性的造成缓存击穿。

但是还有一种场景是如果大量请求去请求同一个redis和mysql中都不存在的key,那么就会造成缓存雪崩。由此可以看出,缓存击穿和缓存雪崩现象是一样的,都是对mysql造成大量的请求和压力。但是解决办法不一样。面对缓存雪崩,常见的做法是把不存在的key会写到redis中,对应的value为空。否则请求还是会无止境的请求mysql的。

最新文章

  1. 常用SQL[ORACLE]
  2. NOIP 考前DP 复习
  3. js 获取当前日期时间3种格式化方法 yyyy-mm-dd hh:MM:ss
  4. Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试
  5. Sublime Text 插件 & 使用技巧
  6. UML状态图(转载)
  7. HTC仅限拨打紧急电话
  8. MySQL load data infile
  9. php面向对象编程学习之高级特性
  10. 一个开源Delphi分类组件推荐网页
  11. Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)
  12. OI常用读入方式效率测试
  13. Kotlin For Android 示例代码实战
  14. Ext z自写checkbox
  15. java反射机制基础
  16. decode encode
  17. Git,Github和Gitlab简介和基本使用
  18. CocosCreator小栗子
  19. springboot深入学习(五)-----spring data、事务
  20. ubuntu中设置xampp开机启动

热门文章

  1. 五句话搞定Python、JavaScript作用域
  2. python多进程实例详解
  3. 【C# 开发技巧】 C#中WinForm程序退出方法技巧总结
  4. (CVE-2017-8464)LNK文件远程代码执行
  5. 各种 Java Thread State 分析
  6. Nginx基本使用方法
  7. eclipse界面
  8. [转帖]Linux内核剖析(一)Linux的历史
  9. (六)Cookie 知识点总结 (来自那些年的笔记)
  10. SAS学习笔记16 SAS创建计数(枚举)变量