2017-08-08 12 views
0

私は、キーとそのキーの値をハッシュセット(キー、値のペア)として持っています。私はキー値を取得するためにPythonを使用しています。 例:ワイルドカード検索によるRedisハッシュキーの反復

top_link:files 
    key: file_path/foldername1 
    value: filename1 

    key: file_path/foldername2 
    value: filename2 

    key: test_path/foldername3 
    value: filename3 

私はそのキー名私は

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) 

を試してみました「FILE_PATH」

で始まるすべてのハッシュを見つけるための良い方法があり、すべてのハッシュ・セット・キーを知りたいですキーは "file_path"で始まります。 SCANは私が達成しようとしていることをしているようです。しかし、すべての例では、トップレベルのキー(top_link:ファイル)ではスキャンが行われますが、ハッシュキーではスキャンされません。助言がありますか? ありがとうございます。

答えて

1

hscan_itermatchパターンを指定すると、一致するキーのみのペアを取得できます。 hscan_iterによって、tupleのようなキーと値のペアが得られます。したがって、値を取得するためにhgetを使用する必要はありません。

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] 

出力:私は以下のようにHSCAN使用

file_path/foldername2 filename2 
file_path/foldername1 filename1 
+0

が、それは私の全体のハッシュが設定されたタプルを与えます。 しかし、一致するキーを取得する方法を教えてください。redis_connection.hscan( "top_link:files"、match = "file_path *") – user2406718

+0

ありがとうございます。出来た。 – user2406718

関連する問題