緩存更新是指在數(shù)據(jù)發(fā)生變化時(shí),保持緩存和數(shù)據(jù)庫的數(shù)據(jù)一致性的問題。如果緩存和數(shù)據(jù)庫的數(shù)據(jù)不一致,會(huì)導(dǎo)致用戶看到過期或者錯(cuò)誤的數(shù)據(jù),影響業(yè)務(wù)邏輯和用戶體驗(yàn)。
為了實(shí)現(xiàn)緩存更新,我們可以采用以下四種方式:
Cache Aside策略:應(yīng)用程序直接與數(shù)據(jù)庫和緩存交互,并負(fù)責(zé)維護(hù)緩存的一致性
查詢:先查詢緩存,如果緩存中沒有,則查詢數(shù)據(jù)庫,并將結(jié)果寫入緩存
更新:先更新數(shù)據(jù)庫,然后刪除緩存或者更新緩存Read/Write Through策略:應(yīng)用程序只和緩存交互,而是使用緩存與數(shù)據(jù)庫交互
查詢:先查詢緩存,如果緩存中沒有,則緩存從數(shù)據(jù)庫中加載數(shù)據(jù),并寫入緩存
更新:先更新緩存,再由緩存同步更新數(shù)據(jù)庫Write Behind 策略:應(yīng)用程序只和緩存交互。當(dāng)有數(shù)據(jù)更新時(shí),只更新緩存,不直接更新數(shù)據(jù)庫,改為異步的方式更新數(shù)據(jù)庫Refresh-Ahead策略:應(yīng)用程序只和緩存交互,由后臺(tái)服務(wù)與數(shù)據(jù)庫交互
查詢:只查詢緩存
更新:由后臺(tái)服務(wù)自動(dòng)從數(shù)據(jù)庫中查詢最新的數(shù)據(jù),并將數(shù)據(jù)寫入緩存中,不同于以上三種,應(yīng)用程序無需等待數(shù)據(jù)的刷新,也無需自己去觸發(fā)數(shù)據(jù)的刷新,而是后臺(tái)服務(wù)來完成這些操作