###redis实现区间查询
在实际开发中经常遇到这样需求:服务端对于客户端不同的版本区间会做些不同的配置,那么客户端一个版本过来怎么快速的定位是属于哪个版本区间呢?可以利用`Sorted Sets`的`zrangebyscore`命令。
```
zadd myset 1011 v1_start
zadd myset 1015 v1_end
zadd myset 1018 v2_start
zadd 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 1
1)v1_end
```
返回v1_end说明1014属于版本区间1,上面的这个命令的意思是在myset中查找第一个score值大于等于1014的member,如果我们查找一个不在区间内的版本,比如1016:
```
zrangebyscore myset 1014 +inf LIMIT 0 1
1)v2_start
```
返回v2_start说明它不已有的版本区间内。
关于该命令的具体用法可以看这里[这里][1]。 不过这种用法不适合那些区间之间存在重叠的场景。

###实现一个hash里不同的field拥有不同expire的场景 目前redis不支持这个特性,这是redis的设计原则决定的。可以在Hash中每个field对应的value本身含有时间的信息,让应用自己去理解和处理。 ![][2]

###在redis里维护自增长的主键
有时候可能需要在redis的多个数据结构之间维护一个类似关系型数据库中的自增长主键,可以利用Sorted Sets的ZINCRBY ```
zincrby myset 1 config_no
1)2
```
上面的意思是将myset中的config_no的score值加1,让key不存在或member不存在时上面的命令相当于: ```
zadd myset 1 config_no
1)1
``` [1]: http://manual.csser.com/redis/sorted_set/zrangebyscore.html
[2]: http://zhanjindong.info/wp-content/uploads/2014/02/11.png

最新文章

  1. getComputedStyle的应用
  2. Devexpress WPF Theme Editor 02
  3. 设计模式--简单工厂(Factory)模式
  4. Android签名机制:生成keystore、签名、查看签名信息
  5. MVC4发布到IIS7报404错误
  6. Cache-control使用:header('Cache-control:private')
  7. zookeeper集群安装配置
  8. PDF.NET框架操作——工具应用(一)
  9. MySQL锁系列3 MDL锁
  10. Jsp中获得集合List或Set的长度
  11. J2SE知识点摘记(十)
  12. c++调用python系列(1): 结构体作为入参及返回结构体
  13. 33.Linux-实现U盘自动挂载(详解)
  14. 2018年冬季寒假作业4--PTA 币值转换
  15. 图论(最短路&最小生成树)
  16. LINQ to SQL 调用 SQL Server 的系统函数
  17. json和pickle模块
  18. 服务定位器(Service Locator)
  19. 使用List和Map遇到得空指针异常
  20. centos7.3上安装oracle xe 11g

热门文章

  1. CCParallaxNode
  2. Spark Streaming的接收KAFKA的数据
  3. Why-are-GPUs-well-suited-to-deep-learning
  4. javascript基础拾遗(八)
  5. FFmpeg Basic学习笔记(3)
  6. Python之Flask和Django框架解决跨域问题,配合附加ajax和fetch等js代码
  7. LeetCode: Pascal's Triangle II 解题报告
  8. java中定义enum示例
  9. spring batch中MyBatisPagingItemReader分页使用介绍
  10. C#学习笔记(28)——委托排序(2)自定义排序