2013-03-11 76 views
0

在我的nodejs應用程序中,我使用Redis鍵作爲頻道名稱。我希望客戶只有在相應的密鑰存在的情況下才能訂閱頻道。問題是EXISTS命令和SUBSCRIBE命令之間,另一個客戶端可能會刪除現有的密鑰。我無法使用WATCH-MULTI-EXEC來使其成爲原子,因爲我無法在MULTI-EXEC塊中使用SUBSCRIBE。我也不能使用Lua腳本。只有在Redis中存在密鑰時才訂閱頻道

如果在這種情況下有什麼辦法維持原子性?

+0

如果在客戶訂閱後刪除密鑰,會發生什麼情況? – akonsu 2013-03-12 17:51:42

+0

它將向頻道發佈「取消訂閱」消息,客戶端在接收到「取消訂閱」消息時應該取消訂閱。 – Chaoran 2013-03-13 18:44:15

回答

0

當前版本的Redis似乎不可能。我轉而採用了不需要原子訂閱的不同方法。