我正在使用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
答案 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的数据库,因为我显然想要一个。