解释起来很复杂。
我想要的是拥有一个命令,该命令将字段作为参数并显示该字段中的所有键和值。
我绕过REDIS文档,找到了HGETALL和HMGET,但这两个命令不符合我的需要。
HGETALL在键的参数中询问并显示所有字段及其值。 示例:http://redis.io/commands/hgetall
HMGET接受参数键和附加到它的字段并显示它们的值。示例:http://redis.io/commands/hmget
还有HKEYS,但要么就是没有给出我想要的东西。
如果没有非常精确的命令,我想知道如何编码,以便能够提供接近我想要的东西以及是否可能。
提前感谢您的回答。
答案 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