如何避免?
1:对查询结果为空的情况也进行缓存 , 缓存时间设置短一点 , 或者该 key 对应的数据 insert 了之后清理缓存 。缓存雪崩
2:对一定不存在的 key 进行过滤 。可以把所有的可能存在的 key 放到一个大的 Bitmap 中 , 查询时通过该 bitmap 过滤 。
当缓存服务器重启或者大量缓存集中在某一个时间段失效 , 这样在失效的时候 , 会给后端系统带来很大压力 。导致系统崩溃 。
如何避免?
1:在缓存失效后 , 通过加锁或者队列来控制读数据库写缓存的线程数量 。比如对某个 key 只允许一个线程查询数据和写缓存 , 其他线程等待 。
2:做二级缓存 , A1 为原始缓存 , A2 为拷贝缓存 , A1 失效时 , 可以访问 A2 , A1 缓存失效时间设置为短期 , A2 设置为长期
3:不同的 key , 设置不同的过期时间 , 让缓存失效的时间点尽量均匀
推荐阅读
- 对一次 redis 未授权写入攻击的分析以及学习
- Redis快的秘诀
- 你的苹果手机多久清理一次垃圾 苹果手机缓存怎么清理
- Redis内存又不够用了?教你几种集群方案轻松甩掉存储难题
- 浏览器缓存机制
- Redis实现分布式锁与Zookeeper实现分布式锁区别
- 基于redis来实现的分布式锁
- 解析redis备份文件rdb的两种方法及对比
- Redis如何保证接口的幂等性?我前后看了10遍,果断收藏
- Redis桌面管理工具Redis Desktop Manager 2019.2发布