雖然我找不到任何東西,但我想我會仔細檢查 - 是否支持memcache交易?與交易的Memcache?
如果沒有,我敢打賭是可能的答案,那麼在交易環境中使用memcache處理的正確方法是什麼?即使數據在緩存中,每次計劃更新時都不需要從數據庫中讀取數據,只需要設置鎖定即可?例如,更新某些數據的腳本如下所示:
- BEGIN; SELECT ... FOR UPDATE;
- 計算...
- UPDATE TABLE ...;
- 更新緩存
- COMMIT;
我想你必須在運行更新查詢後更新緩存,以防萬一遇到死鎖並需要回滾。但是,在提交之前,您還應該更新緩存,以防其他線程正在等待讀取您的數據,並且可能會意外更新緩存,甚至在您之前使用更新的數據來更新緩存,導致現在過時的數據覆蓋它。
這是正確的步驟順序嗎?有什麼辦法可以不必在打開數據庫時更新數據?