2016-06-15 2 views
1

Comment obtenir une liste d'objets à partir du cache redis en fonction de la clé transmise? J'explore cachemanager.net pour redis cache. J'ai parcouru les exemples. Mais je n'ai trouvé aucun exemple lié à l'obtention de la liste d'objets basée sur la clé transmise.cachemanager.net - Comment faire pour obtenir la liste des objets du cache redis basé sur la clé transmise?

var lst =cache.Get("Key_1"); 

Il retourne un seul objet.

Mais je voudrais comme ça. J'ai stocké 1000 objets dans la mémoire cache avec le nom de clé comme Key_1, Key_2, Key_3 ..... Key_1000. Je veux obtenir la liste de 1000 objets si je passe Key_* comme clé.

Répondre

0

Vous pouvez utiliser le hachage redis à la place. Et vous pouvez utiliser la commande hgetall pour récupérer toutes les valeurs de ce hachage.

http://redis.io/commands#hash

Ou si vous voulez utiliser une paire de valeurs clé normale, vous devez écrire un script lua pour y parvenir.

local keys = redis.call('keys','key_*') 
return redis.call('mget',keys) 

Les clés ne sont pas conseillées en production car elles bloquent.

Vous pouvez utiliser la commande de numérisation au lieu des touches pour obtenir toutes les clés correspondant à ce modèle, puis suivre la même procédure pour obtenir la même chose.

0

CacheManager ne fournit aucune fonctionnalité pour rechercher des clés ou obtenir plusieurs clés via un caractère générique. Ce n'est tout simplement pas comment fonctionnent les caches. Comme Karthikeyan l'a souligné, dans Redis, vous pouvez utiliser l'opérateur keys, mais ce n'est pas une bonne solution et ne devrait être utilisé que pour le débogage manuel. Les autres systèmes de cache n'ont même pas quelque chose comme ça, donc CacheManager ne peut pas non plus fournir cette fonctionnalité. Espérons que cela a du sens;)

Avec CacheManager, vous pouvez stocker tous vos objets dans une clé de cache et mettre en cache la liste. Cela peut avoir certaines limitations si vous utilisez redis car la sérialisation peut devenir un problème. Ou, vous stockez chaque objet séparément et récupérez-les dans une boucle. Le client redis optimisera certaines choses, aussi, dans CacheManager, si vous avez 2 couches de cache, les performances s'amélioreront avec le temps.