Redis-问题-缓存击穿
1,问题描述
1)数据库访问压力瞬时增加
2)redis 里面并没有出现大量的key过期
3)redis运行正常
2,问题原因
redis里面的某个key 过期了,大量访问使用这个key
3,解决方案
key可能会在某个时间点被超高并发的访问,是一种非常“ 热点 ”的数据,这个时候需要考虑一个问题:缓存被“ 击穿 ” 的问题,
1)预先设置热门数据:在redis访问高峰之前,把一些热门数据提前存入到redis 里面,加大这些热门数据key 的时长。
2)适时调整:现场监控哪些key 热门,适时调整 key 的过期时长
3)使用锁
1,就是在缓存失效的时候 (判断拿出来的值为空),不立即去 load db,
2,先使用缓存工具的某些带成功操作返回值的操作( 比如·redis 的 setnx )去set 一个mutex key
3,当操作返回成功时,再去进行load db 操作,并设置缓存,最后删除 mutex key;
4,当操作返回失败,证明有线程在load db,当前线程先睡眠一段时间在重试 get 缓存的方法
浙公网安备 33010602011771号