当前位置: 首页 > news >正文

redis中缓存雪崩,缓存穿透,缓存击穿的原因以及解决方案

一  redis的缓存雪崩

1.1 缓存雪崩

在redis中,新,旧数据交替时候,旧数据进行了删除,新数据没有更新过来,造成在高并发环境下,大量请求查询redis没有数据,直接查询mysql,造成mysql的压力骤增,给mysql造成极大的压力,造成一连串的后续异常反应。

1.2 解决办法

1.大多数系统设计者考虑用加锁(最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写。

2.redis中的key设置永不过期;3.redis的集群实现高可用。主从+哨兵

二 缓存穿透

2.1 缓存穿透

在redis中,查询redis数据不存在,查询mysql也不存在,造成两次无用的查询。造成额外不必要的开销

2.2 解决办法

使用布隆过滤器,Bloom-Filter一般用于在大数据量的集合中判定某元素是否存在。最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。

三 缓存击穿

3.1 缓存击穿

在redis中,一开始热点key,redis缓存,mysql中均可查询到,突然某种原因,key失效后,查询redis,mysql均不存在,造成请求大量访问mysql,存在mysql崩溃的风险。

3.2 解决办法

使用A,B双缓存,差异失效时间;更新时,先B后A,查询时,先A后B,解决热点key失效问题,造成缓存击穿。

四  总结

 

http://www.lryc.cn/news/95854.html

相关文章:

  • ChatGPT火热之下的冷思考
  • 查看docker容器启动参数
  • 对Webpack的理解
  • 使用wxPython和pillow开发拼图小游戏(四)
  • XGBoost实例——皮马印第安人糖尿病预测和特征筛选
  • 使用MQ发送对象错误
  • 安装和卸载docker,详细教程
  • RabbitMQ的确认机制
  • java项目之人才公寓管理系统(ssm+mysql+jsp)
  • git使用记录
  • Spring MVC异步上传、跨服务器上传和文件下载
  • 性能测试之并发用户数的估计
  • 【全方位解析】如何获取客户端/服务端真实 IP
  • Ceph简介和特性
  • Python基本语法之符号使用
  • 前端vue部署到nginx并且配置https安全证书全流程
  • 三子棋(超详解+完整码源)
  • 【算法提高:动态规划】1.2 最长上升子序列模型(TODO:最长公共上升子序列)
  • 会不会好奇ai绘画生成器?ai创作的灵感从何而来?
  • 【Ajax】笔记-JQuery发送请求与通用方法
  • 视频的音频提取怎么做?这样提取很简单
  • 几百本常用计算机开发语言电子书链接
  • Docker Compose 解析:定义和管理多容器应用,从多角度探索其优势和应用场景
  • Linux系列---【CentOS 7通过MSTSC连接远程桌面】
  • width: calc(~“100% - 267px“);动态css 调样式
  • Windows Server 2012 搭建网关服务器并端口转发
  • 基于linux下的高并发服务器开发(第三章)- 3.10 死锁
  • 09.计算机网络——套接字编程
  • Data Structure, Algorithm,and Applications in C++
  • Apipost使用教程