web-dev-qa-db-fra.com

Redécouvre toutes les valeurs de la liste sans itération et sans éclatement

J'ai une clé de liste redis simple => "id_fournisseur"

Maintenant, tout ce que je veux, c'est récupérer toutes les valeurs de la liste sans réellement réitérer ou extraire la valeur de la liste

Exemple pour récupérer toute la valeur d'une liste Maintenant, j'ai itéré sur la longueur de redis

element = []
0.upto(redis.llen("supplier_id")-1) do |index| 
  element << redis.lindex("supplier_id",index)
 end

cela peut-il être fait sans l'itération perhap avec une meilleure modélisation de redis. quelqu'un peut-il suggérer

57
Viren

Pour récupérer tous les éléments d'une liste avec Redis, vous n'avez pas besoin d'itérer et de récupérer chaque élément individuellement. Ce serait vraiment inefficace.

Il vous suffit d'utiliser la commande LRANGE pour récupérer tous les éléments en une seule fois.

elements = redis.lrange( "supplier_id", 0, -1 )

renverra tous les éléments de la liste sans modifier la liste elle-même.

138
Didier Spezia

Je suis un peu flou sur votre question mais si le supplier_id est numérique, pourquoi ne pas utiliser un ZSET?

Ajoutez vos valeurs comme ceci:

ZADD suppliers 1 "data for supplier 1"  
ZADD suppliers 2 "data for supplier 2"  
ZADD suppliers 3 "data for supplier 3"  

Vous pouvez alors tout supprimer jusqu'à (mais sans inclure le fournisseur trois) comme ceci:

ZREMRANGEBYSCORE suppliers -inf 2

ou

ZREMRANGEBYSCORE suppliers -inf (3

Cela vous donne également un accès très rapide (par l'ID du fournisseur) si vous voulez simplement en lire.

J'espère que ça t'as aidé!

2
mkgrunder