使用通配符搜索迭代Redis哈希键

时间:2017-08-08 03:15:59

标签: python hash redis wildcard

我有redis键,这些键的值作为哈希集(键,值对)。我正在使用python来检索关键值。 例如:

top_link:files
    key: file_path/foldername1
    value: filename1

    key: file_path/foldername2
    value: filename2

    key: test_path/foldername3
    value: filename3

我想找出键名以“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 个答案:

答案 0 :(得分:2)

您可以在match中提供hscan_iter模式,以获取仅匹配的密钥对。通过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]

输出:

file_path/foldername2 filename2
file_path/foldername1 filename1