我正在使用Jedis,这是Redis本身的新手。我有一个存储哈希值的数据库,需要在数据库中查找所有包含具有指定键和指定值的条目的键。 EG:“在数据库中找到所有键/值均为STATUS = ERROR的散列”。在杰迪斯有可能吗?根据我在谷歌搜索中看到的信息,hscan将在指定的哈希中找到密钥。
更一般而言,通过教我钓鱼的方式,有什么指针可以在哪里查找?似乎没有真正的jedis api文档,甚至Redis文档本身似乎在hscan上也没有任何内容。
答案 0 :(得分:1)
如前所述,您可以使用HSCAN
从哈希中找到指定的键值对。另外,您需要使用SCAN
命令来查找所有哈希。
但是,这不是有效的解决方案。为了有效地实现目标,您需要建立一个额外的索引,即使用Redis SET
保存具有指定键值对的所有散列的键。
HSET hash1 STATUS ERROR
// ...
// HSET other members
// ...
// add it to index
SADD status:error hash1
// get all hashes have the specified key-value pair
SMEMBERS status:error
更新:
正如@Itamar Haber在评论中提到的,如果SET
中有很多记录,则应使用SSCAN
来获取这些成员。由于在这种情况下,SMEMBERS
可能会长时间阻止Redis。