0
我試圖使用redis獲得分佈式鎖定。谷歌搜索後,我發現一個解決方案 https://github.com/jeffomatic/redis-exp-lock-js/blob/master/js/lib/redis_lua.js連接關閉期滿密鑰
但這個解決方案的問題是: 如果應用程序崩潰。超時之前無法恢復鎖定。我想要的是,自動過期關閉連接上的密鑰。 redis中是否有任何命令/過期設置?用於關閉連接上的密鑰。
我試圖使用redis獲得分佈式鎖定。谷歌搜索後,我發現一個解決方案 https://github.com/jeffomatic/redis-exp-lock-js/blob/master/js/lib/redis_lua.js連接關閉期滿密鑰
但這個解決方案的問題是: 如果應用程序崩潰。超時之前無法恢復鎖定。我想要的是,自動過期關閉連接上的密鑰。 redis中是否有任何命令/過期設置?用於關閉連接上的密鑰。
不,Redis的不爲你做的(你只能做這在客戶端)
,你能做些什麼來解決這個僵局的問題是存儲最後獲取的時間戳,並用它來確定如果一個鎖仍然有效或者它是一個死鎖。
如果存儲在其中的值設置得太早(例如current_time - lock_time> timeout),那麼獲取鎖的客戶端將忽略它。
注意:這需要客戶端的時鐘同步。
編輯:
如果LUA是你的一個選項,那麼你不需要客戶端不得不SYNCD時鐘