是否可以在一次操作中获取Redis的所有值?

时间:2016-01-22 20:50:20

标签: redis

假设我添加了两个键:

SET husband Bob
SET wife Alice

然后将这些添加到集合中:

SADD family husband wife

我可以使用SMEMBERS family获取此套装的,它将返回:

1) "wife"
2) "husband"

我真正想要的是

1) "Alice"
2) "Bob"

这可能在一次手术中吗?基本上,我想用SMEMBERS来管道MGET

2 个答案:

答案 0 :(得分:5)

SMEMBERS,但如果Set足够大,您的数据库将花费时间返回所有成员,在此期间它将被阻止。在这种情况下,建议使用SSCAN

编辑:错过了问题本身:)使用SORT family BY nosort GET *

答案 1 :(得分:1)

您需要了解的第一件事是Redis不允许您将集合放入集合中 - 没有嵌套的数据结构。同样,它们在一组中没有兽医和价值 - 只有你的情况下是字符串的成员。这就是为什么你无法获得价值观的原因。

这听起来像你想要的结构不是一个集合而是一个哈希。使用哈希将允许您完全按照您的要求执行操作。

hset family husband bob hset family wife alice

然后使用hvals family获取您所谓的值。

这是正确的方法,因为它使用正确的数据结构,将您的术语与结构相匹配,并提供您想要的结果,而不会产生排序性能损失。此外,它允许您使用各种哈希命令来选择或更新系列的特定成员。

您也可以使用hgetall来使用映射。这样你的代码就知道爱丽丝是妻子而不是女儿。

总体来说,哈希当然是出于各种原因而去的地方。