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分钟随机。这样,每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

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

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

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

相关推荐
ExC1dNtqz19 小时前
Redis 分布式锁进阶第六篇讲解
数据库·redis·分布式
小胖xiaopangss20 小时前
Redis 基础入门与实践指南
数据库·redis·缓存
kishu_iOS&AI20 小时前
Python Redis客户端 AI应用开发完整指南
人工智能·redis·ai a
江畔柳前堤20 小时前
agent面试题
数据库·人工智能·opencv·数据挖掘·语音识别·agent
J.P.August20 小时前
ASM故障组配置实现RAC双活冗余
数据库·oracle
乐兮创想 小林20 小时前
企业官网 i18n 多语言工程实践:URL 策略、hreflang、内容管理与多语言 SEO
数据库·网站建设·企业官网·北京网站建设公司
我爱学习好爱好爱20 小时前
Docker Compose部署SpringBoot2+Vue3+redis项目(Rockylinux9.6):MySQL 主从复制实战
redis·mysql·docker
烁34720 小时前
Oracle学习
数据库·学习·oracle
Bert.Cai20 小时前
Oracle LENGTH函数详解
数据库·oracle