如何用redis对redis进行排序

时间:2017-09-22 11:30:53

标签: javascript node.js sorting redis node-redis

我是这个redis的新手,所以请帮助我! 我使用此命令

在redis中存储值
1.5.4

如果我尝试使用此命令再次设置相同的密钥,我将增加值“0”

client.hmset('top_trend', array[0], 0);
client.expire('top_trend', 86400, redis.print);

这会将我的数据数据存储在redis中,如: 例如:key =“top_trend”

if(client.hexists('top_trend', array[0]) == true){
   client.hincrby('top_trend', array[0] , 1, redis.print);
}

如果tamil已经可用于键“top_trend”,它将增加其值如下:

"tamil"
"0"
"english"
"0"
"hindi"
"0"

现在我需要对值进行排序: 按降序排列并在节点js中按排序顺序获取值。如何实现它。??我尝试按对象_ * - >对象命令对key_value进行排序。但它不会奏效。帮助我。

2 个答案:

答案 0 :(得分:1)

要回答您的问题 - Redis没有提供检索按值排序的哈希内容的方法。如果Hash很小,你能做的就是完整地获取它,然后在应用程序中对它进行排序(Node.js)。

另外,仅供参考,您的代码似乎有些多余 - HINCRBY会初始化字段,即使它不存在,所以:

127.0.0.1:6379> EXISTS foo
(integer) 0
127.0.0.1:6379> HINCRBY foo bar 1
(integer) 1
127.0.0.1:6379> HGETALL foo
1) "bar"
2) "1"

这意味着除非您有充分的理由初始化并检查存在"手动",否则您只需删除该代码即可。

答案 1 :(得分:0)

如果按某种值排序是您实施所需的功能,您可以考虑使用单独的Redis密钥来执行此操作。您可以通过使用ZINCRBY增加分数,轻松地使用排序集。此外,通过这种方式,您还可以利用存储值的字典排序。