【问题标题】:How to search a key pattern in redis hash?如何在 redis 哈希中搜索键模式?
【发布时间】:2016-06-21 09:48:29
【问题描述】:

我有一个哈希表,其键的模式为 USER_TEL,例如:

bob_123456  : Some address
mary_567894 : other address
john_123456 : third address

现在,我想获取所有密钥中具有相同 TEL 的用户的地址。

我想到的是:

tel = 123456
r.hmget('address_book', '*_%s' % tel)

我得到[None] 而不是值。

【问题讨论】:

    标签: python redis


    【解决方案1】:

    你应该使用HSCAN 命令。

    例如:

    redis> HMSET address_book bob_123456 Address1 mary_567894 Address2 john_123456 Address3
    OK
    redis> HSCAN address_book 0 match *_123456
    1) "0"
    2) 1) "bob_123456"
       2) "Address1"
       3) "john_123456"
       4) "Address3"
    

    更新

    Python 实现:

    r = Redis(....) #redis url
    for address in r.hscan_iter('address_book', match='*_123456'):
      print(address)
    

    【讨论】:

    • 感谢您的提示。这是您可能想要添加到答案中的 python 实现:stackoverflow.com/a/30110574/4151875
    • scan 和 hscan 都试过了,hscan 似乎比 scan 快
    • Redis 中是否有任何选项可以直接使用值进行扫描?这里地址1
    猜你喜欢
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2016-06-27
    • 2013-02-08
    • 2017-02-15
    相关资源
    最近更新 更多