• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Redis > Redis中实现查找某个值的范围

Redis中实现查找某个值的范围

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了redis设计与实现,redis设计与实现pdf,redis实现session共享,redis怎么实现的,java实现redis keys等相关知识,希望本文的分享对您有所帮助

本文来自Redis在Google Group上的一个问题,有一位同学发贴求助,说要解决如下的一个问题:他有一个IP范围对应地址的列表,现在需要给出一个IP的情况下,迅速的查找到这个IP在哪个范围,也就是要判断此IP的所有地。这个问题引来了Redis作者Salvatore Sanfilippo(@antirez)的回答。解答如下:

例如有下面两个范围,10-20和30-40
A_start 10, A_end 20
B_start 30, B_end 40
</div>
我们将这两个范围的起始位置存在Redis的Sorted Sets数据结构中,基本范围起始值作为score,范围名加start和end为其value值:

redis 127.0.0.1:6379> zadd ranges 10 A_start
(integer) 1
redis 127.0.0.1:6379> zadd ranges 20 A_end
(integer) 1
redis 127.0.0.1:6379> zadd ranges 30 B_start
(integer) 1
redis 127.0.0.1:6379> zadd ranges 40 B_end
(integer) 1
</div>

这样数据在插入Sorted Sets后,相当于是将这些起始位置按顺序排列好了。

现在我需要查找15这个值在哪一个范围中,只需要进行如下的zrangbyscore查找:
redis 127.0.0.1:6379> zrangebyscore ranges (15 +inf LIMIT 0 1
1) "A_end"
</div>
这个命令的意思是在Sorted Sets中查找大于15的第一个值。(+inf在Redis中表示正无穷大,15前面的括号表示>15而非>=15)

查找的结果是A_end,由于所有值是按顺序排列的,所以可以判定15是在A_start到A_end区间上,也就是说15是在A这个范围里。至此大功告成。

当然,如果你查找到的是一个start,比如咱们用25,执行下面的命令
redis 127.0.0.1:6379> zrangebyscore ranges (25 +inf LIMIT 0 1
1) "B_start"
</div>
返回结果表明其下一个节点是一个start节点,也就是说25这个值不处在任何start和end之间,不属于任何范围。

当然,这个例子仅适用于类似上面的IP范围查找的案例,因为这些值范围之间没有重合。如果是有重合的情况,这个问题本身也就变成了一个一对多的问题。好吧,如果真的是有重合的范围,我们又当如何解决呢?欢迎读者同学你来挑战。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用Redis实现微博关注关系
  • Redis中实现查找某个值的范围
  • Redis实现唯一计数的3种方法分享

相关文章

  • 2017-05-11图文详解Windows下使用Redis缓存工具的方法
  • 2017-05-11Redis中5种数据结构的使用场景介绍
  • 2017-05-11Redis教程(十四):内存优化介绍
  • 2017-05-11redis启动流程介绍
  • 2017-05-11Redis教程(八):事务详解
  • 2017-05-11Redis中主键失效的原理及实现机制剖析
  • 2017-05-11浅谈redis在项目中的应用
  • 2018-10-24Redis TTL命令
  • 2017-05-11详解在Redis在Centos7上的安装部署
  • 2017-05-11解锁redis锁的正确姿势

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Redis教程(一):Redis简介
    • redis常用命令、常见错误、配置技巧等分享
    • Redis教程(二):String数据类型
    • redis启动流程介绍
    • Redis的LRU机制介绍
    • 利用yum安装Redis的方法详解
    • Redis上实现分布式锁以提高性能的方案研究
    • Linux中设置Redis开机启动的方法
    • 从MySQL到Redis的简单数据库迁移方法
    • 让Redis在你的系统中发挥更大作用的几点建议

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有