Redis服务器如何直接在值范围内检查传递值

时间:2017-05-02 09:51:34

标签: redis

我需要使用redis管理以下数据。

Strat_range|End_range|circle|operator|operator_id|circle_id

918005000000|918005099999|UP EAST|BSNL|4|22
919967200000|919967299999|MAHARASHTRA|AIRTEL|15|20

我有一个api用于操作员检测。我通过api&传递手机号码检查上面的系列号码&哪个系列匹配配置&返回线。

例如。 手机号码: - 919967288367 这个号码匹配第二个系列。所以我们退回到下面。

919967200000|919967299999|MAHARASHTRA|AIRTEL|15|20

我们需要直接根据价值进行匹配。因为我们没有使用循环来表现性能。

我有10000系列。

请帮忙。

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用排序集,其中成员是您的行,他们的分数是范围的开始。

E.g:

ZADD ops 918005000000 "918005099999|UP EAST|BSNL|4|22" 919967200000 "919967299999|MAHARASHTRA|AIRTEL|15|20"

查询号码:

ZREVRANGEBYSCORE ops 919967288367 -inf LIMIT 0 1

答案 1 :(得分:-1)

解决方案很简单! 将系列存储为键而不是值

详细说明: 将这些系列存储为Redis键和值。

  

:918005000000 :918005099999 | UP EAST | BSNL | 4 | 22

     

:919967200000 :919967299999 | MAHARASHTRA | AIRTEL | 15 | 20

现在,给定一个手机号码 919967288367 ,形成一个关键模式 9199672*并获取所有匹配的密钥。

从这组键中选择最小的键并从redis中获取它的值。