redis缓存击穿和缓存雪崩
2024-09-01 12:33:35
工作中经常会用到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的。
最新文章
- 常用SQL[ORACLE]
- NOIP 考前DP 复习
- js 获取当前日期时间3种格式化方法 yyyy-mm-dd hh:MM:ss
- Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试
- Sublime Text 插件 &; 使用技巧
- UML状态图(转载)
- HTC仅限拨打紧急电话
- MySQL load data infile
- php面向对象编程学习之高级特性
- 一个开源Delphi分类组件推荐网页
- Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)
- OI常用读入方式效率测试
- Kotlin For Android 示例代码实战
- Ext z自写checkbox
- java反射机制基础
- decode encode
- Git,Github和Gitlab简介和基本使用
- CocosCreator小栗子
- springboot深入学习(五)-----spring data、事务
- ubuntu中设置xampp开机启动