2016-03-02 87 views
0

I read about Redis被用於互斥。 Docs說以下內容:使用Redis進行相互排斥

enter image description here

有人能解釋什麼條件下可以在這個簡單的實現不能以實現互斥。

對於所有的情況下試圖做一些重要的工作,請執行以下操作(僞代碼):

while (set keyForMutex anyValue nx == nil) 
{ 
    sleep (200 ms) 
} 

Finish up the critical task. 

del keyForMutex 

回答

1

這不會實現互斥失敗,但它可能過成功,並提供無限的獨家如果您的代碼在刪除密鑰之前死亡,則將其排除。

一個可能的解決方案是在慷慨的超時後關閉密鑰以允許關鍵任務結束。