雷迪斯:看看“领域”下的一切

时间:2014-01-22 10:17:58

标签: hash redis

解释起来很复杂。

我想要的是拥有一个命令,该命令将字段作为参数并显示该字段中的所有键和值。

我绕过REDIS文档,找到了HGETALL和HMGET,但这两个命令不符合我的需要。

HGETALL在键的参数中询问并显示所有字段及其值。 示例:http://redis.io/commands/hgetall

HMGET接受参数键和附加到它的字段并显示它们的值。示例:http://redis.io/commands/hmget

还有HKEYS,但要么就是没有给出我想要的东西。

如果没有非常精确的命令,我想知道如何编码,以便能够提供接近我想要的东西以及是否可能。

提前感谢您的回答。

2 个答案:

答案 0 :(得分:1)

如果我理解得很好,你就会有几个Hash,每个都有自己的密钥。然后你在这些哈希中有一个字段,例如字段“name”。现在你想问一些类似“告诉我我在哪些键中存储了name属性以及值是什么”

如果是这种情况,可以选择在redis中执行此操作,但这不是存储信息的最佳方式。

这样做的一种可能方法是对存储字段名称的所有键使用通用模式。例如“record:a”,“record:b”......然后你可以发出一个像KEYS记录一样的KEYS命令:你将获得哈希的所有键。 (注意SCAN更有效)

接下来,您需要发出几个命令,如hget key,name。您可以使用MULTI,以便同时执行所有命令。

通过该过程,您将获得第一步中的所有键以及第二步中的所有值。但我不认为这是最佳的。

如果我知道你的用例,也许我可以提供更多帮助

答案 1 :(得分:0)

我认为你明白但我不是英国人,即使我在网站上翻译(谷歌翻译)我也不是都明白你的答案。抱歉。

我尝试过KEYS。我有我的哈希上使用的字段列表。我有一个想法,它是做bla=KEYS *,做blas.each do |bla|并在每个......做,做@ bla = hget(...,'bla')。或类似的东西。但这不可能,我没有钥匙。

事实上,我试图在Ruby on Rails脚手架中用Redis替换sqlite3。它位于控制器中,索引显示散列中的所有值。

更清楚:

 def index
    @counters = Counter.all
 end

我想用这样的代码替换这段代码:

def index
    @counters = REDIS.hget

  end