Trouver les valeurs en utilisant partielle nom de la clé dans un Redis Ensemble Trié
J'ai un ensemble trié qui ont le nom suivant de la clé et les valeurs :
zrange bargraph:branch:1:category:2:product:4
1) "76"
2) "55"
3) "10"
4) "84"
Est-il un mécanisme dans le redis où je peux utiliser un caractère générique(peut-être une ?) lors de l'utilisation de zrange de toujours obtenir les mêmes valeurs? En d'autres termes, ne redis soutien zrange bargraph:direction générale:1:catégorie:2? Si non, comment puis-je obtenir les valeurs de si je ne connais l'id de la catégorie(2) et non pas l'id de produit(4) sans l'aide d'un autre ensemble trié?
Vous devez vous connecter pour publier un commentaire.
Comme vous l'avez mentionné, les CLÉS est inefficace, parce que le moteur effectue une analyse linéaire pour les clés.
Malheureusement, il n'existe pas de solution générique, comme vous l'êtes à la recherche pour
Envisager d'utiliser un JEU pour vos clés de produit par catégorie:
SADD bargraph:branch:1:category:2 1 2 3 4
chercher tous ensemble les membres d'une catégorie ne:
SMEMBERS bargraph:branch:1:category:2
Si vous n'avez pas de soins sur additionnant vos points, ou avoir différents éléments par un ensemble trié, vous pouvez faire une union de votre produit par ensembles classés comme ceci:
ZUNIONSTORE bargraph:branch:1:category:2:product:all 4 bargraph:branch:1:category:2:product1 bargraph:branch:1:category:2:product2 bargraph:branch:1:category:2:product3 bargraph:branch:1:category:2:product4
et maintenant vous pouvez
zrange bargraph:branch:1:category:2:product:all
Vous pipeline opérations ci-dessus pour de meilleures performances
Ici est une mise à jour de réponse pour 2015.
Si vous pouvez mettre à niveau Redis 2.8 ci-dessus, l'ANALYSE de la commande avec le MATCH va travailler pour cela. Avant cette version, pas tellement, et ne PAS utiliser les TOUCHES de commande à l'exception dans un environnement de développement.
http://redis.io/commands/scan
Exemple sur la ligne de commande:
Exemple en PHP:
Note, le code php n'est pas testé et de la documentation de base par exemple ici. La Production de code doit être modifié selon les clés nécessaires à regarder.
Pour ceux qui sont sur Ubuntu voici les instructions pour la mise à niveau php5-redis:
$ php -i | grep Redis
Redis Support => enabled
Redis Version => 2.2.4
cd /etc/php5/cli/conf.d && sudo ln -s ../../mods-available/redis.ini 20-redis.ini
$ php -i | grep Redis
Redis Support => enabled
Redis Version => 2.2.7