2017-09-22 158 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遞增得分。另外,這樣你也可以利用存儲值的字典排序。

相關問題