Redis

缓存穿透

查询一个不存在的数据 可以使用布隆过滤器解决

布隆过滤器

使用redession实现 通过三次hash计算来把数据库的下标改成1 使误判率达到5%以下

缓存击穿

对于设置了过期时间的key 在某个时间点过期 正好有大量的并发请求 这个时候大量的并发请求发现缓存过期以后 一般从后端数据库大量加载数据设回缓存 大量请求可能会把数据库压垮

解决缓存击穿可以设置互斥锁或者逻辑过期

互斥锁

缓存失效的时候 不会立即去加载数据库的内容

先用Redis里边的setnx去设置一个互斥锁 当操作成功返回的时候再进行加载数据库并设置缓存

否则重试get缓存的方法

设置key逻辑过期

不设置过期时间 而是在存入key的时候设置一个过期字段 查询的时候从redis取出数据先判断字段是否过期 如果过期 开通另一个线程进行数据同步 当前线程正常返回数据但是这个数据也不是最新数据

选互斥锁还是逻辑过期解决

互斥锁适合强一致性

逻辑过期适合高可用性 性能高

缓存雪崩

设置缓存的时候采用了相同的过期时间 导致缓存在某一时刻同时失效请求全部转发到DB DB瞬时压力过大雪崩 缓存击穿时 击穿某一个key缓存 而缓存雪崩时多个key同时过期

解决缓存雪崩

在原有的设置缓存过期时间的基础上再加一个随机函数 这样每个key的过期时间重复率会降低 很难引发集体失效的情况了

相关推荐
oradh2 小时前
Oracle闪回技术操作总结
数据库·oracle·oracle闪回技术操作总结·oracle闪回·flashback技术
ltl3 小时前
RocksDB 并发 Compaction 与 Rate Limiter
数据库
闻道且行之4 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
夏炳辉.5 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql
努力的小雨6 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验
数据库
DevOps老兵6 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战
数据库·ai·milvus
这个DBA有点耶6 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路
数据库·架构·aigc
smilejingwei6 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle
意疏7 小时前
2026年远控软件安全横评:六款主流工具逐项核查——官方文档、一手实测与安全事件,全摊开
大数据·前端·数据库
名不经传的养虾人8 小时前
从0到1:企业级AI项目迭代日记 Vol.90|Agent变快了,Judge定下来了
大数据·数据库·人工智能·ai编程·企业ai