【问题标题】:iterating over Redis hash keys with a wild card search使用通配符搜索遍历 Redis 哈希键
【发布时间】:2017-08-08 03:15:59
【问题描述】:

我有 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) 的扫描,而不是对哈希键的扫描。有什么建议么? 谢谢。

【问题讨论】:

    标签: python hash redis wildcard


    【解决方案1】:

    您可以在hscan_iter 中提供match 模式以获取仅匹配的键对。通过hscan_iter,您将获得tuples 的键值对。所以你不必使用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
    

    【讨论】:

    • 当我如下使用 hscan 时,它给了我一个包含整个哈希集的元组。但是你能告诉我如何获取匹配的键吗?redis_connection.hscan("top_link:files", match="file_path*")
    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2016-06-21
    • 2014-06-01
    • 1970-01-01
    • 2014-06-26
    • 2013-11-25
    • 2016-04-12
    相关资源
    最近更新 更多