有序集合类型与集合类型的区别就是他是有序的。有序集合是在集合的基础上为每一个元素关联一个分数,这就让有序集合不仅支持插入,删除,判断元素是否存在等操作外,还支持获取分数最高/最低的前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. php面向对象之$this->用法简述

    在成员方法中,调用成员方法的方法是对象名加方法名,格式就是“对象名->方法名”.但是在定义类的时候,我们往往不知道对象名是什么,所以就没法用对象名,这时,我们就要用到伪变量$this. 什么是$ ...

  2. Ftp客户端需要TSL功能的文件上传

    Ftp客户端需要TSL功能 1.由于最近做了一个项目,需要把打包的文件传输到对方的FTP服务器上,但是用普通的java连接ftp客户端总是连接不上去,对方却说ftp客户端需要开通TSL功能. 直接上代 ...

  3. 二十五 存储技术与应用 iSCSI技术应用 、 udev配置 NFS网络文件系统 、 Multipath多路径 、 NFS网络文件系统 、 udev配置

    1.配置iSCSI服务 服务器上要额外配置一块硬盘 服务端(proxy)安装target,并将新加的硬盘配置为iSCSI 的共享磁盘 在客户端(client)上安装initiator,挂载服务器iSC ...

  4. All 关键字

    本文档已存档,并且将不进行维护. GROUP BY 子句和 ALL 关键字 SQL Server 2005 Transact-SQL 在 GROUP BY 子句中提供 ALL 关键字.只有在 SELE ...

  5. CF809E 【Surprise me!】

    我们要求的柿子是张这样子的: \[\frac{1}{n * (n - 1)} * \sum_{i = 1}^n\sum_{j = 1}^{n}\phi(a_i*a_j)*dis(i, j)\] 其中\ ...

  6. CF786E ALT

    题意 有一棵 \(n\) 个点的树和 \(m\) 个人,第 \(i\) 个人从 \(u_i\) 走到 \(v_i\) 现在要发宠物,要求一个人要么他自己发到宠物,要么他走的路径上的都有宠物. 求最小代 ...

  7. js type

    js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型. new Object() functionundefined ...

  8. Linux中系统状态检测命令

    1.ifconfig用于获取网卡配置与网络状态等信息,格式为:ifconfig [网络设备] [参数] 2.uname命令用于查看系统内核版本等信息,格式为:uname [-a] 查看系统的内核名称. ...

  9. Android 格式化分区命令

    mkfs.vfat  /dev/block/mmcblk0pxxxx           格式化某分区为vfat格式 busybox mkfs.vfat  /dev/block/mmcblk0pxxx ...

  10. angular项目目录结构分析

    详情查看:https://www.angular.cn/guide/file-structure app.module.ts 定义 AppModule, 这个根模块会告诉 Angular 如何组装该应 ...