来自redis的python最相似的前缀
Posted
技术标签:
【中文标题】来自redis的python最相似的前缀【英文标题】:python most similar prefix from redis 【发布时间】:2022-01-21 21:10:41 【问题描述】:我的redis中有所有国家的电话前缀列表,当客户拨打一个号码时,我需要在我的redis中找到该号码最相似的确切前缀。
redis example keys:
auth:prefix:49
auth:prefix:49115
auth:prefix:49116
auth:prefix:4915
auth:prefix:491511
auth:prefix:491512
auth:prefix:491514
auth:prefix:491515
auth:prefix:491516
示例号码匹配:
4911234XXXXXXXX -> auth:prefix:49
491514XXXXXXXXX -> auth:prefix:491514
491513XXXXXXXXX -> auth:prefix:4915
491515XXXXXXXXX -> auth:prefix:491515
我尝试从右侧一个一个地删除数字,并检查每一步,它有效但它根本没有效率。谁能提出更有效的方法?
【问题讨论】:
【参考方案1】:您可以使用MGET
在一次调用 Redis 中获取您输入的所有可能前缀。具有非 nil 值的最长键是您最相似的前缀:
假设你的输入是49151498,所有可能的前缀是:4, 49, 491, 4915, 49151, 491514, 4915149, 49151498:
127.0.0.1:6379[1]> mget 4 49 491 4915 49151 491514 4915149 49151498
1) (nil)
2) "0"
3) (nil)
4) "0"
5) (nil)
6) "0"
7) (nil)
8) (nil)
非零值的最长键是第6个前缀:491514。
使用此解决方案,您只需调用 Redis 一次,并在客户端进行一些检查。它应该比原来的解决方案快得多,即多次调用 Redis。
【讨论】:
这种方法对我有用,谢谢以上是关于来自redis的python最相似的前缀的主要内容,如果未能解决你的问题,请参考以下文章