2017-08-08 48 views
0

我有redis键和这些键的值作为哈希集(键,值对)。我正在使用python来检索关键值。 例如:使用通配符搜索迭代Redis哈希键

top_link:files 
    key: file_path/foldername1 
    value: filename1 

    key: file_path/foldername2 
    value: filename2 

    key: test_path/foldername3 
    value: filename3 

我想找出所有的hash组键,其键名称以“FILE_PATH”

我试图

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”开头的密钥。 SCAN似乎正在做我正在努力实现的目标。但是所有的例子都显示了顶层关键字(top_link:files)的扫描,而不是关于散列键的扫描。有什么建议么? 谢谢。

回答

1

您可以在hscan_iter中提供match模式以获得仅匹配的密钥对。通过hscan_iter,您可以获得键值对,如tuple s。因此,您不必使用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] 

输出:

file_path/foldername2 filename2 
file_path/foldername1 filename1 
+0

当我如下使用HSCAN,它给了我整个哈希集合的元组。 但你能告诉我如何获取匹配的密钥?redis_connection.hscan(“top_link:files”,match =“file_path *”) – user2406718

+0

谢谢。有效。 – user2406718