2017-09-22 4 views
0

Je suis nouveau à ce redis, alors s'il vous plaît aidez-moi! Je possède des valeurs de stockage dans Redis en utilisant cette commande,Comment trier un hachage en redis par sa valeur

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

et i'will augmenter la valeur « 0 » si je tente de mettre en même touche en utilisant cette commande,

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

Cela va stocker mon tableau de données dans Redis comme, par exemple : key = « top_trend »

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

si tamil est déjà disponible pour la clé « top_trend » il incrémente son va Lue comme ceci:

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

Maintenant je dois trier les valeurs: par ordre décroissant et pour obtenir les valeurs dans l'ordre trié dans js nœud. Comment l'atteindre? J'ai essayé de trier key_value par objet _ * -> commande d'objet comme ceci. Mais ça ne marchera pas. Aidez moi.

Répondre

1

Pour répondre à votre question - Redis ne fournit pas un moyen de récupérer le contenu d'un Hash classé par valeur. Ce que vous pouvez faire, à condition que le Hash soit petit, c'est de le récupérer dans son intégralité, puis de le trier dans l'application (Node.js).

aussi Pour votre information, il semble que votre code est un peu superflu - HINCRBY va initialiser le champ même si elle n'existe pas, donc:

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" 

Cela signifie que si vous avez une bonne raison pour initialiser et vérifier pour l'existence "manuellement", vous pouvez simplement supprimer ce code.

0

Si vous avez besoin d'une commande pour une certaine valeur, vous pouvez envisager d'avoir une clé Redis distincte pour cela. Vous pouvez facilement utiliser les ensembles triés pour cela, en incrémentant le score avec ZINCRBY. De plus, vous pouvez également tirer parti de l'ordre lexicographique des valeurs stockées.