2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

為什么會形成緩存雪崩?緩存雪崩解決方案

更新時間:2023-08-24 來源:黑馬程序員 瀏覽量:

IT培訓班

什么是緩存雪崩

緩存雪崩是緩存中大量key失效后當高并發到來時導致大量請求到數據庫,瞬間耗盡數據庫資源,導致數據庫無法使用。

造成緩存雪崩問題的原因是是大量key擁有了相同的過期時間,比如對課程信息設置緩存過期時間為10分鐘,在大量請求同時查詢大量的課程信息時,此時就會有大量的課程存在相同的過期時間,一旦失效將同時失效,造成雪崩問題。

解決緩存雪崩

1、使用同步鎖控制查詢數據庫的線程

使用同步鎖控制查詢數據庫的線程,只允許有一個線程去查詢數據庫,查詢得到數據后存入緩存。

Java
synchronized(obj){
  //查詢數據庫
  //存入緩存
}

2、對同一類型信息的key設置不同的過期時間

通常對一類信息的key設置的過期時間是相同的,這里可以在原有固定時間的基礎上加上一個隨機時間使它們的過期時間都不相同。示例代碼如下:

Java
   //設置過期時間300秒
  redisTemplate.opsForValue().set("course:" + courseId, 
JSON.toJSONString(coursePublish),300+new Random().nextInt(100), 
TimeUnit.SECONDS);

3、緩存預熱

不用等到請求到來再去查詢數據庫存入緩存,可以提前將數據存入緩存。使用緩存預熱機制通常有專門的后臺程序去將數據庫的數據同步到緩存。


分享到:
在線咨詢 我要報名
和我們在線交談!