redis延遲雙刪的策略

2021-10-20 20:49:36 字數 633 閱讀 2484

1.為什麼要進行延遲雙刪

一般我們在更新資料庫資料時,需要同步redis中快取的資料

所以存在兩種方法:

(1)第一種方案:先執行update操作,再執行快取清除。

(2)第二種方案:先執行快取清除,再執行update操作。

弊端:當存在併發請求時,很容易出現問題

(1)第一種方案:當請求1執行update操作後,還未來得及進行快取清除,此時請求2查詢到並使用了redis中的舊資料。

(2)第二種方案:當請求1執行清除快取後,還未進行update操作,此時請求2進行查詢到了舊資料並寫入了redis。

2.如何實現延遲雙刪

所以此時我們需要使用第三種方案:

先進行快取清除,再執行update,最後(延遲n秒)再執行快取清除。

3.需要注意的點

上述中(延遲n秒)的時間要大於一次寫操作的時間,一般為3-5秒。

原因:如果延遲時間小於寫入redis的時間,會導致請求1清除了快取,但是請求2快取還未寫入的尷尬。。。

ps:一般寫入的時間會遠小於5秒

雙端鍊錶的頭插尾插頭刪尾刪

雙端鍊錶的定義我在這裡就不贅述了。直接上圖講 雙端鍊錶的插入,無論是頭插還是尾插,都要記住大話資料結構中的一張圖,強調順序的。這裡的順序比較容易記住,就是自己寫 的時候可能會比較迷糊,我是這樣記得,箭頭從起點到終點的方向為等式的左邊,箭頭的終點為等式的右邊,拿 舉例子,箭頭的方向為node prev...

redis的淘汰策略

volatile lru 從已設定過期時間的資料集 server.db i expires 中挑選最近最少使用的資料淘汰。volatile ttl 從已設定過期時間的資料集 server.db i expires 中挑選將要過期的資料淘汰。volatile random 從已設定過期時間的資料集 s...

Redis的淘汰策略

maxmemory 配置指令 maxmemory 用於指定 redis 能使用的最大記憶體。既可以在 redis.conf 檔案中設定,也可以在執行過程中通過 config set 命令動態修改。例如,要設定 100mb 的記憶體限制,可以在 redis.conf 檔案中這樣配置 maxmemory...