node.js - 如何从redis中的值中获取键并通过检查其值删除其他键?

标签 node.js redis

我想维护两个集合。

  1. The live or active servers. Say collection contains SERVER1,SERVER2.
  2. The clients c1,c2,c3 connected to specific server say SERVER1 and clients c4,c5,c6 are connected to SERVER2 The other collections will have,
**KEY : VALUE**
    c1:SERVER1
    c3:SERVER1
    c4:SERVER2
    c6:SERVER2
    c2:SERVER1
    c5:SERVER2

我将从集合中删除的非事件服务器。

每当我从 redis 中删除服务器(比如 SERVER1)时,我想删除其值与其匹配的实例。这里我想完全删除 c1,c2,c3。然后收集将是这样的:

**KEY : VALUE**
    c4:SERVER2
    c6:SERVER2
    c5:SERVER2

要维护集合,我可以使用什么类型的 redis 命令。喜欢集合/列表。? 我怎样才能达到这个结果。?

最佳答案

对于主列表,您可以将它们存储为 SET key val命令,或者您可以使用 HSET 将它们存储在专用哈希表中(或 HMSET )。后者将为您提供有效地使用此表的选项(特别是如果您的数据库中存储了大量键)。

你还想保留一个 SET连接到每个服务器的客户端。 删除服务器时,从主哈希表中删除所有服务器集成员,并在完成后删除该集。

以你的例子为例:

   HMSET connectedClients c1 SERVER1 c2 SERVER1 c3 SERVER1 c4 SERVER2 c5 SERVER2 c6 SERVER2
   SADD SERVER1Clients c1 c2 c3
   SADD SERVER2Clients c4 c5 c6 

删除服务器时,您可以让所有连接的客户端 SMEMBERS SERVERxClients ,并从散列中删除输出列表 HDEL connectedClients <Output of SMEMBERS>

所有 hash 的链接和 set命令文档

关于node.js - 如何从redis中的值中获取键并通过检查其值删除其他键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23826478/

相关文章:

node.js - 在哪里保存授权 token

php - 使用 Node.js 将图像插入到 Excel 工作表中

node.js - 为什么node js中的云函数无法正确部署

ruby-on-rails - Redis随机开始提示无法保存RDB快照

ruby-on-rails - redis 在 rails 中的使用,有多少使用两个?

Redis-python 在一次操作中设置多个键/值

node.js - 什么是 node_redis 中的流水线?

javascript - Visual Studio 2015 - Javascript ES6 不工作

node.js - 通过 cron 将 Grunt 和 Node 作为批处理文件运行

node.js - 如何将嵌套的数字数组作为命令行参数传递给 Node.js 程序并以数组的形式获取?