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似乎不可能。我转而采用了不需要原子订阅的不同方法。