日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java高并发(二十一)高并发场景下缓存常见问题

發(fā)布時間:2024/9/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java高并发(二十一)高并发场景下缓存常见问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

緩存一致性

????當(dāng)數(shù)據(jù)實時性要求很高時,需要保證緩存中的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)一致,緩存節(jié)點與副本中的數(shù)據(jù)一致,不能出現(xiàn)差異現(xiàn)象,這就比較依賴緩存的過期和更新策略了。一般會在數(shù)據(jù)發(fā)生更改的時候,主動跟新緩存中的數(shù)據(jù)或者移除對應(yīng)的緩存,這時可能會出現(xiàn)緩存一致性的問題。

? ? 現(xiàn)象一:更新數(shù)據(jù)庫成功,更新緩存失敗,數(shù)據(jù)不一致。

? ? 現(xiàn)象二:更新緩存成功,更新數(shù)據(jù)庫失敗,數(shù)據(jù)不一致。

? ? 現(xiàn)象三:更新數(shù)據(jù)庫成功,淘汰緩存失敗,數(shù)據(jù)不一致。

? ? 現(xiàn)象四:淘汰緩存成功,更新數(shù)據(jù)庫失敗,查詢緩存miss。

緩存并發(fā)問題

? ? 緩存過期后將嘗試從后端的數(shù)據(jù)庫獲取數(shù)據(jù),這時一個看似合理的流程,但是在高并發(fā)場景下,有可能有多個請求從數(shù)據(jù)庫中請求數(shù)據(jù),對后端數(shù)據(jù)庫造成極大的沖擊,甚至導(dǎo)致雪崩現(xiàn)象。此外當(dāng)某個緩存的Key被更新時,同時也可能被大量請求獲取,這也會導(dǎo)致一致性的問題。如何避免類似的問題?可以通過鎖的機制來避免。在緩存更新或更新的情況下,先嘗試獲取鎖,當(dāng)更新或者從數(shù)據(jù)庫獲取數(shù)據(jù)完成后,在釋放鎖。其他請求只要犧牲一定的等待時間就可以從緩存中繼續(xù)獲取數(shù)據(jù)。

緩存穿透問題

? ? 在高并發(fā)場景下,如果某個Key被高并發(fā)訪問,沒有被命中,出于對容錯性的考慮,會嘗試從后端數(shù)據(jù)庫中獲取,從而導(dǎo)致大量的請求達(dá)到數(shù)據(jù)庫,而該Key對應(yīng)的數(shù)據(jù)本身就是空的情況下,就導(dǎo)致了數(shù)據(jù)庫中并發(fā)的去執(zhí)行了很多不必要的查詢操作,從而導(dǎo)致了巨大的沖擊和壓力。這種情況下可以通過以下幾種方式來避免緩存穿透問題:

  • 緩存空對象:對查詢結(jié)果為空的對象,也進(jìn)行緩存,如果是集合的話,可以緩存一個空集合
  • 單獨過濾處理:對所有可能數(shù)據(jù)為空的Key,進(jìn)行統(tǒng)一的存放。在請求前做攔截,這樣避免請求穿透到后端數(shù)據(jù)庫。這種方式實現(xiàn)起來相對復(fù)雜。比較適合命中不高但是更新頻繁的數(shù)據(jù)
  • 緩存的雪崩現(xiàn)象?

    請求都到后臺數(shù)據(jù)庫導(dǎo)致系統(tǒng)崩潰

    總結(jié)

    以上是生活随笔為你收集整理的java高并发(二十一)高并发场景下缓存常见问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。