【问题标题】:python most similar prefix from redis来自redis的python最相似的前缀
【发布时间】: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

我尝试从右侧一个一个地删除数字,并检查每一步,它有效但它根本没有效率。谁能提出更有效的方法?

【问题讨论】:

    标签: python redis


    【解决方案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。

    【讨论】:

    • 这种方法对我有用,谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2018-10-09
    • 2018-07-14
    • 2020-07-05
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    相关资源
    最近更新 更多