博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis实现区间查询
阅读量:6293 次
发布时间:2019-06-22

本文共 1158 字,大约阅读时间需要 3 分钟。

###redis实现区间查询在实际开发中经常遇到这样需求:服务端对于客户端不同的版本区间会做些不同的配置,那么客户端一个版本过来怎么快速的定位是属于哪个版本区间呢?可以利用`Sorted Sets`的`zrangebyscore`命令。```zadd myset 1011 v1_startzadd myset 1015 v1_endzadd myset 1018 v2_startzadd myset 1023 v2_end```如上我们像myset里插入了4条数据,代表的意思是版本区间v1是从1011-1015版本,版本区间v2是从1018-1023版本。注:redis的Sorted Sets需要score必须为float型,所以这里需要对版本号做一个等价的转换。那么我现在如何判断1014版本属于哪个区间呢,使用zrangebyscore如下操作:```zrangebyscore myset 1014 +inf LIMIT 0 11)v1_end```返回v1_end说明1014属于版本区间1,上面的这个命令的意思是在myset中查找第一个score值大于等于1014的member,如果我们查找一个不在区间内的版本,比如1016:```zrangebyscore myset 1014 +inf LIMIT 0 11)v2_start```返回v2_start说明它不已有的版本区间内。关于该命令的具体用法可以看这里[这里][1]。不过这种用法不适合那些区间之间存在重叠的场景。 ###实现一个hash里不同的field拥有不同expire的场景目前redis不支持这个特性,这是redis的设计原则决定的。可以在Hash中每个field对应的value本身含有时间的信息,让应用自己去理解和处理。![][2] ###在redis里维护自增长的主键有时候可能需要在redis的多个数据结构之间维护一个类似关系型数据库中的自增长主键,可以利用Sorted Sets的ZINCRBY``` zincrby myset 1 config_no1)2```上面的意思是将myset中的config_no的score值加1,让key不存在或member不存在时上面的命令相当于:```zadd myset 1 config_no1)1```  [1]: http://manual.csser.com/redis/sorted_set/zrangebyscore.html  [2]: http://zhanjindong.info/wp-content/uploads/2014/02/11.png

转载于:https://www.cnblogs.com/zhanjindong/p/3549994.html

你可能感兴趣的文章
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>
hadoop、hbase、zookeeper集群搭建
查看>>
python中一切皆对象------类的基础(五)
查看>>
modprobe
查看>>
android中用ExpandableListView实现三级扩展列表
查看>>
%Error opening tftp://255.255.255.255/cisconet.cfg
查看>>
java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
查看>>
《从零开始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
python多线程队列安全
查看>>
[汇编语言学习笔记][第四章第一个程序的编写]
查看>>
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>