我的Node.js應用程序接受來自外部的連接。每個連接處理程序在Redis上讀取一個SET,最終修改該集合,然後繼續。問題是與此同時另一個異步連接可以嘗試讀取相同的SET並嘗試更新它或根據它讀取的內容決定下一步。有沒有辦法在Redis中獲取鎖定? (Node.js)
我知道Redis盡最大努力成爲原子,但這不足以滿足我的用例。考慮一下:設置被讀取以理解它是否滿(有一個商業規則)。如果它是完整的,那麼會發生一些事情。問題是,如果只剩下一個插槽,則兩個半併發連接可以認爲每個插槽都是最後一個。我得到溢出。
我有一種方法來保持連接「等待」很短的時間,其他最終需要更新設置狀態?
我認爲這是一個極端情況,非常非常unluckely ......但你知道:)
使用另一個關鍵的「鎖」是一種選擇,或者它臭?
我不想在這裏重複Salvatore的答案。他之前曾提到過這個問題。使用SETNX和WATCH來模擬鎖。 https://github.com/antirez/redis/pull/41 – alphazero