2017-09-22 160 views
0

我对这个redis很陌生,所以请帮助我! 我存储使用此命令在Redis的值,如何在redis中对其值进行排序

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

和i'will递增值“0”,如果我尝试使用以下命令再次设置相同的密钥,

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

这将我的数据的阵列存储在像Redis的, 如:键=“top_trend”

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

如果泰米尔已经可用的关键“top_trend”这将增加其VA略这样的:

"tamil" 
"1" 
"english" (//if english is already 3 times available) 
"4" 

现在我需要的值进行排序: 降序排列,并获得在节点中的JS排序了值。如何实现它。我试图通过object _ * - > object命令对key_value进行排序。但它不会起作用。帮我。

回答

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" 

这意味着,除非你有一个很好的理由来初始化和检查对于“手动”存在,您可以简单地删除该代码。

0

如果按某个值排序是您实现所需的功能,那么您可能会考虑使用单独的Redis键来执行此操作。您可以轻松地使用Sorted Sets,通过使用ZINCRBY递增得分。另外,这样你也可以利用存储值的字典排序。

相关问题