2017-08-08 3 views
0

J'ai les clés redis et les valeurs de ces clés comme ensemble de hachage (clé, paire de valeurs). J'utilise python pour récupérer les valeurs clés. ex:itérer sur les clés de hachage Redis avec une recherche par caractère générique

top_link:files 
    key: file_path/foldername1 
    value: filename1 

    key: file_path/foldername2 
    value: filename2 

    key: test_path/foldername3 
    value: filename3 

Je veux trouver toutes les clés du jeu de hachage dont le nom clé commence par « file_path »

J'ai essayé

all_keys = redis_connection.hscan_iter("top_link:files") 
for key in all_keys: 
    if key.startswith("file_path"): 
    redis_connection.hget("top_link:files",key) 

est-il une meilleure façon de trouver tout le hachage les clés qui commencent par "file_path". SCAN semble faire ce que j'essaie d'accomplir. Mais tous les exemples montrent scan sur les touches de niveau supérieur (top_link: fichiers) mais pas sur les clés de hachage. Aucune suggestion? Merci.

Répondre

1

Vous pouvez fournir un modèle match dans hscan_iter pour obtenir des paires de clés correspondantes. Et par hscan_iter, vous obtenez des paires clé-valeur comme tuple s. Vous n'avez donc pas besoin d'utiliser hget pour obtenir les valeurs.

matched_pairs = redis_connection.hscan_iter('top_link:files', match='file_path*') 
for keyvalue in matched_pairs: 
    # Here `keyvalue` is a tuple containing key and value 
    print keyvalue[0], keyvalue[1] 

Sortie:

file_path/foldername2 filename2 
file_path/foldername1 filename1 
+0

quand je hscan comme ci-dessous, il me donne un tuple avec jeu complet de hachage. mais pouvez-vous s'il vous plaît montrez-moi comment aller chercher les clés correspondantes? Redis_connection.hscan ("top_link: files", match = "file_path *") – user2406718

+0

merci. ça a marché. – user2406718