redis缓存 雪崩 击穿
2021-07-24 15:08:58 17 举报
AI智能生成
描述了redis的各种问题 已经解决方案
作者其他创作
大纲/内容
击穿
定义
在高并发的情况下,缓存的key失效(或者LRU/LFU造成的内存淘汰),直接去访问数据库
解决
原则:阻止并发到达DB
方案: 1、在发现redis中的数据过期后 设置锁去读取数据库
2、读取后重新放入redis
3、此时其他的线程只有获取到锁才能去DB
4、如果没有获取到锁的话 从第一步操作开始递归获取
2、读取后重新放入redis
3、此时其他的线程只有获取到锁才能去DB
4、如果没有获取到锁的话 从第一步操作开始递归获取
存在问题1:redis挂了之后 会出现死锁
解 决:设置锁的过期时间
存在问题2:redis没有挂 但是因为读取数据库响应慢 导致redis在有限的时间内 没用读取到数据(redis锁超时)
解 决: 多线程:一个线程取DB 一个线程监控是否取回来了 如果没用取回来的话 更新锁的时间
解 决:设置锁的过期时间
存在问题2:redis没有挂 但是因为读取数据库响应慢 导致redis在有限的时间内 没用读取到数据(redis锁超时)
解 决: 多线程:一个线程取DB 一个线程监控是否取回来了 如果没用取回来的话 更新锁的时间
穿透
定义
从业务系统中查询的是系统中根本不存在的数据
解决
布隆过滤器:只能增加数据 不能删除数据
布谷鸟过滤器
布谷鸟过滤器
雪崩
定义
大量的key同时失效,涉及到的key的查询全部集中到db
产生的场景:1、在晚上零点过期,换取一批新key。如需要在晚上0点过期的设置的数据
2、时点无关性
2、时点无关性
解决
针对上边的场景1:需要强依赖击穿的解决方案,也可以加延时解决
场景2:随机过期时间
场景2:随机过期时间
0 条评论
下一页