Vous pouvez utiliser la commande SORT
.
Stockez ces index dans un SET
et stockez un score/poids correspondant à chaque index, et effectuez un tri par celui-ci. La clé de score peut être un hachage, et vous pouvez avoir plusieurs ensembles de scores différents.
Voici un exemple: Une liste de tâches avec 3 paramètres, l'heure d'insertion, le temps d'exécution et une priorité.
127.0.0.1:6379> SADD todos 1 2 3
127.0.0.1:6379> HMSET todos:1 insertionTime 1 executionTime 10 priority 5
127.0.0.1:6379> HMSET todos:2 insertionTime 2 executionTime 25 priority 1
127.0.0.1:6379> HMSET todos:3 insertionTime 5 executionTime 4 priority 7
Pour obtenir la liste triée par chacun:
127.0.0.1:6379> SORT todos by todos:*->insertionTime
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SORT todos by todos:*->executionTime
1) "3"
2) "1"
3) "2"
127.0.0.1:6379> SORT todos by todos:*->priority
1) "2"
2) "1"
3) "3"
Si vous enregistrez également la tâche elle-même (ou toute autre donnée) dans ce hachage ou toute autre touche de la même Redis db, vous peut obtenir dans le même appel unique avec l'argument GET
en option:
127.0.0.1:6379> HSET todos:1 task "do something"
127.0.0.1:6379> HSET todos:2 task "do something else"
127.0.0.1:6379> HSET todos:3 task "do this other thing"
127.0.0.1:6379> SORT todos by todos:*->priority get todos:*->task
1) "do something else"
2) "do something"
3) "do this other thing"
Notez que la commande SORT ne fonctionnera pas avec groupe Redis que vous accédez à plusieurs clés. Et cette complexité de temps de commande peut être très élevée, vous devez l'utiliser avec prudence, surtout lorsque l'utilisation et les tailles d'ensemble augmentent.