我需要使用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系列。
请帮忙。
答案 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中获取它的值。