有序集合类型与集合类型的区别就是他是有序的。有序集合是在集合的基础上为每一个元素关联一个分数,这就让有序集合不仅支持插入,删除,判断元素是否存在等操作外,还支持获取分数最高/最低的前N个元素。有序集合中的每个元素是不同的,但是分数却可以相同。有序集合使用散列表和跳跃表实现,即使读取位于中间部分的数据也很快,时间复杂度为O(log(N)),有序集合比列表更费内存。

Redis有序集合的操作命令和对应的api如下:

zadd [zset] sco 'value'
JedisAPI:public Long zadd(final String key, final double score, final String member)
功能:向zset中添加score为sco的value,如果value已存在,则仅修改score,同时返回0,否则返回1

zrange/zrangebyscore [zset] start end (wisthscores)
JedisAPI:public Set<String> zrange(final String key, final long start, final long end)
功能:返回zset中从索引start到end的元素,withscores可选是否同时显示元素对应的score

zrem [zset] 'value'
JedisAPI:public Long zrem(final String key, final String... member)
功能: 删除zset中值为value的元素

zincrby [zset] n 'value'
JedisAPI:public Double zincrby(final String key, final double score, final String member)
功能:如果zset中存在value,则令其score加n,否则添加value,令其score为n

zrank [zset] 'value'
JedisAPI:public Long zrank(final String key, final String member)
功能:返回zset中值为value的元素排名(按score从小到大)

zrevrank [zset] 'value'
JedisAPI:public Long zrevrank(final String key, final String member)
功能:按score从大到小返回元素排名

zrevrange [zset] start end
JedisAPI:public Set<String> zrevrange(final String key, final long start, final long end)
功能:返回zset[end…start]

zcount [zset] start end
JedisAPI:public Long zcount(final String key, final double min, final double max)
功能:返回zset在指定区间的数量

zcard [zset]
JedisAPI:public Long zcard(final String key)
功能:返回zset中元素的个数

zscore [zset] 'value'
JedisAPI:public Double zscore(final String key, final String member)
功能:返回值为value的元素的score

zremrangebyrank [zset] start end
JedisAPI:public Long zremrangeByRank(final String key, final long start, final long end)
功能:删除zset按score从小到大排序索引从start到end的元素。

zremrangebyscore [zset] score1 score2
JedisAPI:public Long zremrangeByScore(final String key, final double start, final double end)
功能:删除zset中score在score1到score2之间的元素

Redis ZSet 有序集合的更多相关文章

  1. php使用redis的有序集合zset实现延迟队列

    延迟队列就是个带延迟功能的消息队列,相对于普通队列,它可以在指定时间消费掉消息. 延迟队列的应用场景: 1.新用户注册,10分钟后发送邮件或站内信. 2.用户下单后,30分钟未支付,订单自动作废. 我 ...

  2. 聊聊Mysql索引和redis跳表 ---redis的有序集合zset数据结构底层采用了跳表原理 时间复杂度O(logn)(阿里)

    redis使用跳表不用B+数的原因是:redis是内存数据库,而B+树纯粹是为了mysql这种IO数据库准备的.B+树的每个节点的数量都是一个mysql分区页的大小(阿里面试) 还有个几个姊妹篇:介绍 ...

  3. [PHP] PHP多个进程配合redis的有序集合实现大文件去重

    1.对一个大文件比如我的文件为 -rw-r--r--  1 ubuntu ubuntu  9.1G Mar  1 17:53 2018-12-awk-uniq.txt 2.使用split命令切割成10 ...

  4. Redis 操作有序集合数据

    Redis 操作有序集合数据: > zadd names "Tom" // zadd 用于往有序集合中添加元素,其中 1 在 Redis 中称为 score(分数),用来进行 ...

  5. python 操作redis之——有序集合(sorted set) (七)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员已经是有序 ...

  6. Redis对象——有序集合(ZSet)

    有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序 ...

  7. redis的有序集合ZSET(stored set)

    相关命令 1.ZADD ZADD key-name score member [score member……] 将带有给定分值的成员添加到有序集合里 2.ZREM ZREM  key-name mem ...

  8. redis学习-有序集合(zset)常用命令

    zadd:有序集合增加一个或者多个键值对 与set集合不同,zset添加的时候需要 指定 score,这个是用来排名的 zrange:返回指定范围的键 zcount:返回集合指定范围的个数(以每个键值 ...

  9. redis之有序集合类型(Zset)——排行榜的实现

    当数据库对排序支持的不是很好,可以利用redis有序集合排序 原文链接:http://blog.csdn.net/loophome/article/details/50373202

随机推荐

  1. jQuery 中的事件和动画

    一.jQuery中的事件 1.加载DOM 以浏览器装载文档为例,在页面加载完毕后,浏览器会通过JavaScript为DOM元素添加事件.在常规JavaScript代码中,通常使用window.onlo ...

  2. 23 | MySQL是怎么保证数据不丢的?

    今天这篇文章,我会继续和你介绍在业务高峰期临时提升性能的方法.从文章标题“MySQL是怎么保证数据不丢的?”,你就可以看出来,今天我和你介绍的方法,跟数据的可靠性有关. 在专栏前面文章和答疑篇中,我都 ...

  3. faebdc的烦恼 莫队

    faebdc的烦恼 莫队 题面 思路 有点难想的莫队. 首先我们肯定要一个cnt[i]记录难度i出现的次数,但是我们发现每次删去一个难度后,如果那个难度的个数恰好是当前最多次数,我们就可能要更新一下答 ...

  4. Firefox 英文改中文

    小书匠kindle 在Linux上安装好Firefox后,想进设置界面个性化一下,想看看浏览历史,无奈Linux上默认的Firefox是英文设置界面的,对于我种强迫症不能忍. 刚开始还在设置界面下搜索 ...

  5. sqlserver 两 表 数据 复制 (附加 跨服务器 查询的方法)

    一 : 这个sql 语句 可以快速的 将 一 个旧表 中的指定字段的数据 复制到 另一个新表的指定字段中 insert into dbo.Customer ( CustomerId , Custome ...

  6. Nexus 3搭建及备份恢复

    Nexus 3搭建 官网下载相应的软件版本:Nexus官网 配置仓库存放地址 # tar xf xxxx # more bin/nexus.vmoptions -Xms500M -Xmx500M -X ...

  7. php发现一个神奇的函数

    echo strtr('aaddffvvbbcc','avc','242'); //22ddff44bb22 echo '<br>'; echo str_replace('ad',22,' ...

  8. pytorch基础学习(一)

    在炼丹师的路上越走越远,开始入手pytorch框架的学习,越炼越熟吧... 1. 张量的创建和操作 创建为初始化矩阵,并初始化 a = torch.empty(, ) #创建一个5*3的未初始化矩阵 ...

  9. tomcat注册成服务

    1>修改"bin\service.bat"文件 服务名:下图中的SERVICE_NAME 服务显示名称:下图中的DISPLAYNAME 服务描述:Description 2& ...

  10. Android中为什么主线程不会因为Looper.loop()方法造成阻塞

    很多人都对Handler的机制有所了解,如果不是很熟悉的可以看看我 如果看过源码的人都知道,在处理消息的时候使用了Looper.loop()方法,并且在该方法中进入了一个死循环,同时Looper.lo ...