Redis中缓存相关的总结

Redis中缓存相关的总结

1.缓存穿透


缓存穿透指的是查询一个一定不存在的数据时,由于存储层查不到数据因此不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能会导致 DB 挂掉。在这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它。那么什么是布隆过滤器呢?

布隆过滤器主要是用于检索一个元素是否在一个集合中。它的底层原理是,先初始化一个比较大的数组,里面存放的是二进制0或1。一开始都是0,当一个key来了之后,经过3次hash计算,在模数组长度找到数据的下标,然后把数组中原来的0改为1。这样,三个数组的位置就能标明一个key的存在。查找的过程也是一样的。当然,布隆过滤器有可能会产生一定的误判,因为不同的ket可能会计算出相同的位置,一般数组长度越小越容易出现覆盖。我们一般可以设置这个误判率,大概不会超过5%。其实这个误判是必然存在的,要不就得增加数组的长度。5%以内的误判率一般的项目也能接受,不至于高并发下压倒数据库。

2.缓存击穿

缓存击穿指的是对于设置了过期时间的key,缓存在某个时间点过期的时候,恰好这个时间点对这个Key有大量的并发请求过来。这些请求发现缓存过期,一般都会从后端 DB 加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把 DB 压垮。

3.缓存雪崩

缓存雪崩指的是设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重而雪崩。与缓存击穿的区别是:雪崩是很多key,而击穿是某一个key缓存。解决方案主要是,可以将缓存失效时间分散开。比如,可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机。这样,每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

最后,可以来一个视频中的总结。

很难引发集体失效的事件。

最后,可以来一个视频中的总结。

相关推荐
就叫飞六吧18 分钟前
防抖、幂等、唯一约束三件套 ;
数据库
神奇霸王龙36 分钟前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
鲸采云SRM采购管理系统44 分钟前
采购管理系统哪家好?2026最新测评对比
java·服务器·数据库
cfm_29141 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
Full Stack Developme1 小时前
SQL 注入 的历史及设计工作原理
数据库·sql
Tisfy1 小时前
Codex:通过编辑配置文件添加带Bearer的自定义MCP
数据库·大模型·agent·codex·mcp
哈__1 小时前
面向AI智能体的数据库专业技能包:将DBA工程经验封装为可调用能力
数据库·人工智能·dba
阿坤带你走近大数据1 小时前
SQL里where后面的1=1是干嘛的,走的是什么索引
数据库·sql
阿坤带你走近大数据1 小时前
SQL的执行顺序和书写顺序的介绍
数据库·sql·oracle
Poo_Chai2 小时前
QT emit信号后完整处理流程,包括槽函数响应流程
java·开发语言·数据库