Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash REDIS:查看“下的所有内容”;“字段”;_Hash_Redis - Fatal编程技术网

Hash REDIS:查看“下的所有内容”;“字段”;

Hash REDIS:查看“下的所有内容”;“字段”;,hash,redis,Hash,Redis,解释起来相当复杂 我想要的是有一个命令,将字段作为参数,并显示所有键和值​​在这个领域 我查阅了REDIS文档,找到了HGETALL和HMGET,但这两个命令不满足我的需要 HGETALL在参数中询问键,并显示所有字段及其值。 示例如下: HMGET接受参数键和附加到它的字段,并显示它们的值。示例如下: 也有HKEYS,但也有不满足我要求的 如果没有非常精确的命令,我想知道如何编写代码,以便提供接近我希望的内容,如果可能的话 提前感谢您的回答。如果我理解得很好,您有几个哈希,每个哈希都有自己的密

解释起来相当复杂

我想要的是有一个命令,将字段作为参数,并显示所有键和值​​在这个领域

我查阅了REDIS文档,找到了HGETALL和HMGET,但这两个命令不满足我的需要

HGETALL在参数中询问键,并显示所有字段及其值。 示例如下:

HMGET接受参数键和附加到它的字段,并显示它们的值。示例如下:

也有HKEYS,但也有不满足我要求的

如果没有非常精确的命令,我想知道如何编写代码,以便提供接近我希望的内容,如果可能的话


提前感谢您的回答。

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

如果是这样的话,在redis中有一些选项可以做到这一点,但这并不是存储信息的最佳方式

一种可能的方法是对存储字段名的所有键使用公共模式。例如“记录:a”,“记录:b”。。。然后,您可以发出KEYS命令,如KEYS record:这样您就可以获得散列的所有键。(注意扫描效率更高)

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

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


如果我知道你的用例,也许我可以帮你更多的忙。

我想你能理解,但我不是英国人,即使我在网站上翻译(谷歌翻译),我也不完全理解你的答案。对不起

我试过钥匙。我有哈希表中使用的字段列表。我有一个主意,它是do
bla=KEYS*
,do a
blas.each do | bla |
,在每个。。。do,do@bla=hget(…,'bla')。或者类似的事情。但这不可能,我没有钥匙

事实上,我正试图用RubyonRails中的Redis替换sqlite3。在控制器中,索引显示所有值​​在散列中

更清楚地说:

 def index
    @counters = Counter.all
 end
我想用这样的代码替换此代码:

def index
    @counters = REDIS.hget

  end

您是否试图从许多散列中获取特定字段?是的,我试图获取特定字段上的所有数据(键和值)。从很多散列中可以看出,是的,这就是我写作的原因(注释扫描更有效)。当然,只有当您使用redis 2.8或更高版本时,SCAN才更有效,但它是增量的:它不会长时间阻止redis实例。无论如何,我会排除任何基于扫描键的解决方案。如果OP需要快速访问字段中的数据,则需要显式索引。是的,我所说的“更高效”的意思是,无论您的键空间有多大,每次运行它都会得到一个可预测的时间,因此不会减慢实例的速度。我也同意,正如我在回答中所说的那样,这不是最优的。一旦我们了解了这个用例,我们就可以更好地帮助用户创建二级索引。我想我会在8小时内回答。在评论中,我无法解释。