2014-10-09 40 views
4

進程A和B兩者都在Redis資源R上運行。兩個進程可能會使用Watch更改相同的Redis資源。我應該擔心活鎖嗎?

這些進程可以並行執行,並且我需要兩個進程在它們進行更改時確定R的值。因此我使用Redis transactionsWATCH command。從文檔中:「只有在沒有其他客戶修改任何WATCHed密鑰的情況下,我們纔要求Redis進行交易,否則根本不會輸入交易。」

要在失敗的情況下重試,建議的方法是循環Watch/Multi-exec循環直到成功。但是,我擔心A和B都可能無限期地循環(即:活鎖)。

這是一件值得擔憂的事情嗎?更好的是,該怎麼辦?將重試設置一個隨機超時解決問題?

回答

4

不需要擔心,因爲只有A或B才能成功執行EXEC並更改R(Redis [主要]單線程)。失敗的那個將需要用新的R值重試交易。

+2

廢話。當然。謝謝 – 2014-10-09 14:08:25

相關問題