2012-02-29 55 views
2

我有以下問題:我通過mranney's driver一起使用RedisNodeJS,我的NodeJS Web服務器從Redis檢索一些數據,對其執行一些操作並保存它回到了Redis。但是這個操作(稱爲X)可能需要一段時間,因此多個用戶可以在相同的資源上同時觸發它。Redis存儲(或任何數據庫?)鎖定機制(NodeJS)

因此,如果用戶A觸發X並且用戶B同時觸發X,我希望用戶A完成任務,然後用戶B獲取(處理過的)數據並執行X.與此同時用戶B等待。用戶的順序是無關緊要的 - 只有一次一個。那麼如何在我的場景中實現這一點?如何鎖定/解鎖Redis?它甚至有可能嗎?

回答

6

有幾種方法可以在Redis中實現鎖定,但不知道更多關於情況的信息,它聽起來像SETNX會起作用。請參閱Redis文檔中的Design pattern: Locking with SETNX。另外,transactions in Redis可能是有趣的閱讀,但我懷疑這不是你在這種情況下。

+1

偉大的鏈接!我認爲這正是我需要的!我已經知道交易,但找不到任何鎖定。非常感謝你。 :) – freakish 2012-02-29 10:48:55