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

redis-缓存穿透与雪崩

一,缓存穿透(查不到)

        

在默认情况下,用户请求数据时,会先在缓存(Redis)中查找,若没找到即缓存未命中,再在数据库中进行查找,数量少可能问题不大,可是一旦大量的请求数据(例如秒杀场景)缓存都没有命中的话,就会全部转移到数据库上,造成数据库极大的压力,就有可能导致数据库崩溃。网络安全中也有人恶意使用这种手段进行攻击被称为洪水攻击

  解决方案

        1,布隆过滤器

对所有可能查询的参数以Hash的形式存储,以便快速确定是否存在这个值,在控制层先进行拦截校验,校验不通过直接打回,减轻了存储系统的压力。

2,缓存空对象

一次请求若在缓存和数据库中都没找到,就在缓存中方一个空对象用于处理后续这个请求。

这样做有一个缺陷:存储空对象也需要空间,大量的空对象会耗费一定的空间,存储效率并不高。解决这个缺陷的方式就是设置较短过期时间

即使对空值设置了过期时间,还是会存在缓存层和存储层的数据会有一段时间窗口的不一致,这对于需要保持一致性的业务会有影响

二 ,缓存击穿(量太大,缓存过期)

概念

​ 相较于缓存穿透,缓存击穿的目的性更强,一个存在的key,在缓存过期的一刻,同时有大量的请求,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。这就是缓存被击穿,只是针对其中某个key的缓存不可用而导致击穿,但是其他的key依然可以使用缓存响应。

​ 比如热搜排行上,一个热点新闻被同时大量访问就可能导致缓存击穿。

解决方案

设置热点数据永不过期

这样就不会出现热点数据过期的情况,但是当Redis内存空间满的时候也会清理部分数据,而且此种方案会占用空间,一旦热点数据多了起来,就会占用部分空间。

加互斥锁(分布式锁)

在访问key之前,采用SETNX(set if not exists)来设置另一个短期key来锁住当前key的访问,访问结束再删除该短期key。保证同时刻只有一个线程访问。这样对锁的要求就十分高。

三 ,缓存雪崩
概念

大量的key设置了相同的过期时间,导致在缓存在同一时刻全部失效,造成瞬时DB请求量大、压力骤增,引起雪崩。

解决方案

redis高可用

这个思想的含义是,既然redis有可能挂掉,那我多增设几台redis,这样一台挂掉之后其他的还可以继续工作,其实就是搭建的集群

限流降级

这个解决方案的思想是,在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

数据预热

数据加热的含义就是在正式部署之前,我先把可能的数据先预先访问一遍,这样部分可能大量访问的数据就会加载到缓存中。在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

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

相关文章:

  • K8S临时存储-本地存储-PV和PVC的使用-动态存储(StorageClass)
  • jeecg-boot安装
  • Unity面经(自整)——移动开发与Shader
  • Nginx实现反向代理、负载均衡、动静分离
  • 【Linux】网络基础(一)
  • 前端小白学习Vue框架(二)
  • 飞书api增加权限
  • CSS3 平面 2D 变换+CSS3 过渡
  • 【Jenkins】Jenkins自动化工具介绍
  • 课时93:流程控制_函数进阶_综合练习
  • oracle创建整个数据库的只读账户
  • 文件名乱码危机:数据恢复全攻略
  • Unity Standalone File Browser,Unity打开文件选择器
  • 面向对象的架构三段式写一篇论文
  • npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED
  • pytorch-多分类实战之手写数字识别
  • httpsok-快速申请谷歌SSL免费证书
  • LiveGBS流媒体平台GB/T28181功能-国标级联中如何自定义通道国标编号编辑通道编号保持唯一性
  • mysql 大表凌晨定时删除数据
  • ArcGIS和ArcGIS Pro快速加载ArcGIS历史影像World Imagery Wayback
  • 数据仓库的—数据仓库的体系架构
  • 【C/C++基础知识】const 关键字
  • Docker之数据卷和Dockerfile
  • pull拉取最新代码
  • 工控 modbusTCP 报文
  • 在Ubuntu服务器上快速安装一个redis并提供远程服务
  • 玩机进阶教程------手机定制机 定制系统 解除系统安装软件限制的一些步骤解析
  • Bilstm双向长短期神经网络多输入单输出回归分析
  • ELK+Filebeat日志分析系统
  • flex吃干抹净