【快速了解缓存穿透与缓存雪崩】
“永远不过期”
这种方法对于性能非常友好,唯一不足的就是构建缓存时候,其余线程(非构建缓存的线程)可能访问的是老数据,但是对于一般的互联网功能来说这个还是可以忍受 。
缓存预热
有效应对缓存的击穿和雪崩的一种方式是缓存预热 。
缓存预热就是系统上线前,将相关的缓存数据直接加载到缓存系统 。这样就可以避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题,用户直接查询事先被预热的缓存数据 。
解决思路
- 直接写个缓存刷新页面,上线时手工操作下 。
- 数据量不大,可以在项目启动的时候自动进行加载 。
- 定时刷新缓存 。
有效应对缓存的击穿和雪崩的另一种方式是限流 。
在缓存失效后,通过队列来控制读数据库写缓存的线程数量 。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待 。
常见的限流算法
- 固定时间窗口算法(计数器)
- 滑动时间窗口算法
- 令牌桶算法
- 漏桶算法
总结
缓存穿透、击穿和雪崩是以预防为主、补救为辅,而在应对缓存的问题其实也没有一个完全完美的方案,只有最适合自己业务系统的方案 。
更多内容,欢迎关注微信公众号:全菜工程师小辉~
推荐阅读
- 缓存算法FIFO、LFU、LRU
- 喝菊花好还是胎菊好,金丝皇菊什么样的好金丝皇菊和胎菊哪个好你了解吗
- 酒精进入人体的方式 如何将酒精快速排到体外
- 面部神经炎
- 如何快速减后背呢?
- 开发人员如何快速定制化实现一个基于Solr的搜索引擎
- 如何快速去水印批量搬运短视频,教你玩转自媒体短视频
- 怎样快速瘦身20斤小妙招,怎么快速瘦身10斤
- 爽肤水的功效作用你了解吗
- JAVA算法合集:冒泡+插入+快速+希尔+归并+桶+基数+剪枝+回溯算法
