如何在redis hash中搜索关键模式?

Jan*_*and 6 python redis

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

bob_123456  : Some address
mary_567894 : other address
john_123456 : third address
Run Code Online (Sandbox Code Playgroud)

现在,我想获取在其密钥中具有相同电话号码的所有用户的地址。

我想出的是:

tel = 123456
r.hmget('address_book', '*_%s' % tel)
Run Code Online (Sandbox Code Playgroud)

我得到[None]而不是值。

the*_*000 6

您应该使用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"
Run Code Online (Sandbox Code Playgroud)

更新

Python实现:

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