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

Redis缓存穿透、缓存雪崩和缓存击穿

一、缓存穿透

  一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

【如何避免】:

  • 对查询结果为空的情况也进行缓存,缓存时间设置短一点。

  • 对不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。

二、缓存雪崩

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

【如何避免】:

  • 将系统中key的缓存失效时间均匀地错开,防止统一时间点有大量的key对应的缓存失效。比如我们可以在原有的失效时间基础上增加一个随机值。

三、缓存击穿

  缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。

【如何避免】:

  • 让缓存永不过期。

转发自:Redis缓存穿透、缓存雪崩和缓存击穿-CSDN博客

 

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

相关文章:

  • EF Core分页
  • 高效设计新选择!用StartAI打造各种风格主题的平铺素材图!
  • 大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
  • qml Emitter 详解
  • 【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接
  • mybatis-spring @MapperScan走读分析
  • Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)
  • 【0x005B】HCI_Write_Default_Erroneous_Data_Reporting命令详解
  • 基于 Python 的学生成绩管理系统设计与实现
  • 【Apache Doris】周FAQ集锦:第 29 期
  • 【C】初阶数据结构3 -- 单链表
  • Autodl安装tensorflow2.10.0记录
  • 【Rust】常见集合
  • SpiderFlow平台v0.5.0之引入selenium插件
  • git push命令
  • 洛谷P1161
  • Python脚本自动发送电子邮件
  • vscode的安装与使用
  • sparkRDD教程之必会的题目
  • Unity 2d描边基于SpriteRender,高性能的描边解决方案
  • 信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
  • js基础---var与let的区别以及const的使用
  • 用css和html制作太极图
  • OJ12:160. 相交链表
  • 软件工程和项目管理领域 - CMMI 极简理解
  • C# 线程基础之 线程同步
  • [c语言日寄]c语言也有“回”字的多种写法——整数交换的三种方式
  • RocketMQ 知识速览
  • 优化 Azure Synapse Dedicated SQL Pool中的 SQL 执行性能的经验方法
  • 详解英语单词“pro bono”:公益服务的表达(中英双语)