用HMSET查询REDIS

时间:2015-09-21 12:55:04

标签: database data-structures redis node-redis

我正在使用REDIS数据存储,我创建了HMSET,如:

HMSET key:1 source 5 target 2
HMSET key:2 source 3 target 1
HMSET key:3 source 3 target 5
HMSET key:4 source 6 target 2
HMSET key:5 source 2 target 3    

现在,我想根据提供的源和目标列表查询这些键。假设,源和目标列表是[2,3,6]

我想要一个像

这样的查询
select from key where source in[2, 3, 6] and traget in[2, 3, 6]

会给我一些像

这样的结果
key:4 source 6 target 2 
key:5 source 2 target 3

1 个答案:

答案 0 :(得分:3)

使用这样的数据集(只有几组),你唯一的选择就是迭代它们(在lua脚本中或通过读取应用程序)并通过检查哈希来自己进行过滤。

为了加快速度,您可以维护二级索引(再次,努力是你的)。类似的东西:

SADD source:3 key:2 key:3
SADD target:2 key:1 key:4

然后,您可以通过发出SINTERSTORE命令

来相对快速地找到所有匹配的密钥
SINTERSTORE found_keys source:2 source:3 source:6 target:2 target:3 target:6

您将拥有found_keys名称下的密钥。

虽然,如果你发现自己 this ,你应该问问自己:为什么我不放弃并使用支持SQL的数据库,因为我显然想要一个。