87 votes

Redis récupère toutes les valeurs d'une liste sans itération et sans popping.

J'ai une liste simple de redis key => "supplier_id".

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

Exemple pour récupérer toutes les valeurs d'une liste Je dois maintenant itérer sur la longueur redis

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

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

200voto

Didier Spezia Points 23333

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 individuel. Ce serait vraiment inefficace.

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

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

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

2voto

mkgrunder Points 511

Je ne comprends pas bien votre question, mais si l'identifiant du fournisseur est numérique, pourquoi ne pas utiliser un fichier de type ZSET ?

Ajoutez vos valeurs comme suit :

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

Vous pourriez alors retirer tout ce qui va jusqu'au fournisseur trois (mais pas inclus) comme suit :

ZREMRANGEBYSCORE suppliers -inf 2

ou

ZREMRANGEBYSCORE suppliers -inf (3

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

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X