Redis récupère toute la valeur de la liste sans itération et sans popping
J'ai une simple clé de liste redis = > "supplier_id"
Maintenant tout ce que je veux récupérer toute la valeur de la liste sans réellement itérer ou éclater la valeur de la liste
Exemple pour récupérer toute la valeur d'une liste maintenant j'ai itérer sur la longueur 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 peut-être avec une meilleure modélisation redis . quelqu'un peut-il suggérer
2 réponses
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 vous suffit d'utiliser la commande LRANGE pour récupérer tous les éléments d'un seul coup.
elements = redis.lrange( "supplier_id", 0, -1 )
Retourne tous les éléments de la liste sans modifier la liste elle-même.
Je ne suis pas un peu clair 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 pas y compris 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 ID fournisseur) si vous voulez juste en lire.
Espérons que cela aide!