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

Redis穿透、击穿、雪崩

redis是一款常用的非关系型数据库,我们常用与作为数据缓存的组件。
接下来介绍一下面试中常被问到的三个概念以及简单的解决方法。

穿透

什么叫缓存穿透
缓冲穿透,是当有一个请求过来时,查询redis缓存不存在,又去查询数据库(如MySQL)。数据库中也不存在这个数据,因为不存在该数据,所以不会对其做缓存,所以当下一个请求继续查询这个数据的时候,请求还是会打到数据库,这种情况就叫做缓冲穿透。

解决方法

  • 最简单的解决方法就是对数据库查询时查不到的数据也做缓存,可以缓存空对象。
  • 使用布隆过滤器预先判断数据是否存在,如果布隆过滤器返回不存在,那么可以确定数据一定不存在,直接返回错误信息,无需查询缓存和数据库。

击穿

什么是缓冲击穿
就是一个热点数据(比如秒杀的一个数据),短时间会有大量的请求过来。如果这个数据缓存中没有(已过期或者被删除),那么短时间(瞬时)来了大量的请求,当第一个请求打到数据库,但是还没有做好数据的缓存,第2、3、4、…一堆请求都过来了,请求都会一并打到数据库。

解决方法

  • 设置合理的过期时间,已经每次访问后更新过期时间
  • 预热缓冲
  • 使用分布式锁

雪崩

什么是雪崩
雪崩和击穿类似,击穿是一个热点数据,雪崩是同一时间大量缓冲过期,导致请求直接打到数据库。

解决方法

  • 合理设计过期时间,使过期时间均布(或随机)
  • 使用分布式锁

http://www.kler.cn/a/389076.html

相关文章:

  • 大数据面试题--kafka夺命连环问(后10问)
  • Python网络爬虫与数据采集实战——什么是网络爬虫
  • 【webrtc】 RTP 中的 MID(Media Stream Identifier)
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 【C++ 算法进阶】算法提升十三
  • 009_SSH_Mysql图书管理系统(学生注册 借书 还书 绵阳)——lwplus87(免费送)
  • PHP常用的安全函数作用
  • 建立更及时、更有效的安全生产优化提升策略的智慧油站开源了
  • 2.ARM_ARM是什么
  • 【Elasticsearch入门到落地】1、初识Elasticsearch
  • 几种常见的处理ARP欺骗的方法:静态ARP表和VLAN等
  • C# 都有哪些集合?
  • 丹摩征文活动|FLUX.1图像生成模型:AI工程师的创新实践
  • 2024年华为OD机试真题-矩阵扩散-Java-OD统一考试(E卷)
  • 符号回归概念
  • Super-Slomo简介及4090配置环境
  • 解决 Redis 报错:`(error) NOAUTH Authentication required`
  • 绘制3D图
  • Python学习从0到1 day26 第三阶段 Spark ⑤ 搜索引擎日志分析
  • Python处理PDF组件使用及注意事项
  • API网关如何在iPaaS平台中助企业构建安全高效的API生态体系
  • HTML5+css3(浮动,浮动的相关属性,float,解决浮动的塌陷问题,clear,overflow,给父亲盒子加高度,伪元素)
  • C语言中操作符详解(上)
  • 【云原生开发】K8S集群管理后端开发设计与实现
  • [C++] GDB的调试和自动化检测
  • 计算机课程管理:Spring Boot与工程认证的协同