首页 > 其他 > 详细

redis实现区间查询

时间:2014-02-15 06:50:38      阅读:1031      评论:0      收藏:0      [点我收藏+]

在实际开发中经常遇到这样需求:服务端对于客户端不同的版本区间会做些不同的配置,那么客户端一个版本过来怎么快速的定位是属于哪个版本区间呢?可以利用Sorted Setszrangebyscore命令。

  1. zadd myset 1011 v1_start
  2. zadd myset 1015 v1_end
  3. zadd myset 1018 v2_start
  4. zadd myset 1023 v2_end

如上我们像myset里插入了4条数据,代表的意思是版本区间v1是从1011-1015版本,版本区间v2是从1018-1023版本。 注:redis的Sorted Sets需要score必须为float型,所以这里需要对版本号做一个等价的转换。 那么我现在如何判断1014版本属于哪个区间呢,使用zrangebyscore如下操作:

  1. zrangebyscore myset 1014 +inf LIMIT 0 1
  2. 1)v1_end

返回v1_end说明1014属于版本区间1,上面的这个命令的意思是在myset中查找第一个score值大于等于1014的member,如果我们查找一个不在区间内的版本,比如1016:

  1. zrangebyscore myset 1014 +inf LIMIT 0 1
  2. 1)v2_start

返回v2_start说明它不已有的版本区间内。 关于该命令的具体用法可以看这里这里

不过这种用法不适合那些区间之间存在重叠的场景。

redis实现区间查询

原文:http://www.cnblogs.com/magialmoon/p/3549994.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!