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

Redis穿透、击穿、雪崩

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

穿透

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

解决方法

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

击穿

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

解决方法

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

雪崩

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

解决方法

  • 合理设计过期时间,使过期时间均布(或随机)
  • 使用分布式锁
http://www.lryc.cn/news/481008.html

相关文章:

  • VBA高级应用30例应用3在Excel中的ListObject对象:插入行和列
  • 2024系统架构师---上午综合题真题(重复考试知识难点)
  • 连接kafka消息队列报org.apache.kafka.clients.NetworkClient异常
  • 淘宝商品评论API:代码界的“买家秀”大揭秘
  • RabbitMQ队列详细属性(重要)
  • 游戏服务器和普通服务器的区别
  • Java 中的 Supplier:让数据生成更灵活
  • 轻松理解操作系统 - Linux的数据块是如何储存数据的?
  • 青藤深度参编的终端安全国家标准正式发布
  • 软考:去中心化的部署有什么特点
  • L8.【LeetCode笔记】回文数
  • 双版本android studio安装
  • npm镜像的常用操作
  • Unity插件NodeCanvas之行为树的详细教程
  • Vue全栈开发旅游网项目(9)-用户登录/注册及主页页面开发
  • Flutter 的 Widget 概述与常用 Widgets 与鸿蒙 Next 的对比
  • 微服务day04
  • Spring Boot 集成JWT实现Token验证详解
  • 如何快速搭建一个spring boot项目
  • 学习笔记:黑马程序员JavaWeb开发教程(2024.11.9)
  • 【软考】系统分析师第二版 新增章节 第20章微服务系统分析与设计
  • 抓包工具WireShark使用记录
  • C++上机实验|多态性编程练习
  • php伪协议介绍
  • 『事善能』MySQL基础 — 2.MySQL 5.7安装(一)
  • 漫谈分布式唯一ID
  • 【复旦微FM33 MCU 开发指南】ADC
  • ORB_SLAM3安装
  • GoLang协程Goroutiney原理与GMP模型详解
  • 全文检索ElasticSearch到底是什么?