Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 仅当Redis中存在密钥时才订阅频道_Node.js_Redis_Publish Subscribe_Atomicity - Fatal编程技术网

Node.js 仅当Redis中存在密钥时才订阅频道

Node.js 仅当Redis中存在密钥时才订阅频道,node.js,redis,publish-subscribe,atomicity,Node.js,Redis,Publish Subscribe,Atomicity,在我的nodejs应用程序中,我使用Redis键作为频道名称。我希望客户端仅在相应的密钥存在时订阅通道。问题在于,在EXISTS命令和SUBSCRIBE命令之间,另一个客户端可能会删除现有密钥。我不能使用WATCH-MULTI-EXEC使其原子化,因为我不能在MULTI-EXEC块中使用SUBSCRIBE。我也不能使用Lua脚本 在这种情况下,是否有办法保持原子性?对于当前版本的Redis,这似乎是不可能的。我换了一种不需要原子订阅的方法 如果在客户端订阅后删除密钥,会发生什么情况?它将向频道发

在我的nodejs应用程序中,我使用Redis键作为频道名称。我希望客户端仅在相应的密钥存在时订阅通道。问题在于,在EXISTS命令和SUBSCRIBE命令之间,另一个客户端可能会删除现有密钥。我不能使用WATCH-MULTI-EXEC使其原子化,因为我不能在MULTI-EXEC块中使用SUBSCRIBE。我也不能使用Lua脚本


在这种情况下,是否有办法保持原子性?

对于当前版本的Redis,这似乎是不可能的。我换了一种不需要原子订阅的方法

如果在客户端订阅后删除密钥,会发生什么情况?它将向频道发布
取消订阅
消息,客户端在收到
取消订阅
消息时应取消订阅。