快取使用總結

2021-07-23 12:46:23 字數 871 閱讀 2275

localcache

memcache

redis

區別對比

快取型別

使用場景

使用示例

優點缺點

localcache

少量資料,對應用程式唯讀或讀多寫少

後台配置,分割槽資訊

無需網路開銷,訪問速度最快

集群機器資料不同步

memcache

海量資料,高併發讀寫

記憶體占用相對redis少,適合大鍵儲存

資料結構單一,不支援備份及持久化,只支援客戶端操作

redis

海量資料,高併發讀寫

資料結構豐富,支援備份及持久化,支援伺服器操作

相對memcache記憶體效率低

先淘汰快取在更新資料庫。對於這種做法,如果淘汰了快取,此時剛好來了乙個請求,由於快取已經被淘汰,新來的請求將從資料庫讀取資訊重新load到快取,如果先前的寫操作還沒完成,讀操作讀到的將是舊的資料,此時重新load到快取的資料將是髒資料並且後續的請求將都讀到髒資料。

先更新資料庫在淘汰快取。更新db的時候剛好有請求到達,此時請求讀到的將是髒資料。db更新後將淘汰舊的快取,後續的請求讀到的將是新的資料。

先更新(淘汰)cache,後續db操作失敗。如果是更新快取,db操作失敗將導致快取中的資料是髒資料。如果是淘汰快取,db更新失敗會導致一次cache miss。

先更新了db,後續cache操作失敗,此時將會導致cache中的資料是髒資料。

在考慮了更新失敗的情況下,分布式服務中並沒有完美的解決方案,方法需要自己根據業務進行權衡,除非你願意犧牲效能使用事務強一致性

use hashes when possible

sortset

setredis底層**

快取使用總結

以下只是個人工作中的一點總結,如有問題歡迎指正。1.delete操作時,先刪資料庫還是先刪快取?一般情況下應該先刪除資料庫。原因 如果先刪快取,在刪完快取之後刪資料庫之前,另乙個讀請求可能將資料庫裡的資料讀出並寫到快取,造成快取和資料庫不一致 資料庫裡的被刪除了,快取裡還有乙份 如果沒有超時設定,資...

快取使用總結

作為乙個查詢系統,效率和穩定性是系統設計的重中之重,提公升效率最有效的方法無疑是快取。快取方式選取 1 本地快取 guva cache,map 2 分布式快取 tair 分布式環境下,採用分布式快取很好的解決了資料一致性問題,所有業務系統共享tair集群。但是增加了一次遠端tr呼叫。穩定性和效率相對...

使用redis快取的實踐總結

使用場景一 高頻率使用但不頻繁更新的業務資料。由於不頻繁更新,所以可以在系統啟動時,從資料庫中載入,放入redis。如果更新,需重啟服務,當然這比較笨。更好的做法下面會列出。使用場景二 高頻率使用更新還算頻繁的業務資料。由於有一定頻率的更新,所以可以在使用者訪問時,查詢快取,如果沒有值,則從資料庫中...