Redis教程
Redis安装和使用
Redis数据类型操作命令
高级话题
Jedis操作Redis

Redis有序集合(sorted set)

redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。

不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的成员进行从小到大的排序。

基本命令

A、zadd

语法:zadd key score member [score member…]

作用:将一个或多个 member 元素及其 score 值加入到有序集合 key 中,如果 member

存在集合中,则更新值;score 可以是整数或浮点数

返回值:数字,新添加的元素个数

例 1:创建保存学生成绩的集合

例 2:使用浮点数作为 score

B、 zrange

语法:zrange key start stop [WITHSCORES]

作用:查询有序集合,指定区间的内的元素。集合成员按 score 值从小到大来排序。 start,

stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。以 -1 表示最后一个成员,-2 表示倒数第二个成员。WITHSCORES 选项让 score 和 value 一同返回。

返回值:自定区间的成员集合

例 1:显示集合的全部元素,不显示 score,不使用 WITHSCORES

例 2:显示集合全部元素,并使用 WITHSCORES

例 3:显示第 0,1 二个成员

例 4:排序显示浮点数的 score

C、 zrevrange

语法:zrevrange key start stop [WITHSCORES]

作用:返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小) 来排列。其它同 zrange 命令。

返回值:自定区间的成员集合

例 1:成绩榜

D、zrem

语法:zrem key member [member…]

作用:删除有序集合 key 中的一个或多个成员,不存在的成员被忽略

返回值:被成功删除的成员数量,不包括被忽略的成员。

例 1:删除指定一个成员 wangwu

E、 zcard

语法:zcard key

作用:获取有序集 key 的元素成员的个数

返回值:key 存在返回集合元素的个数, key 不存在,返回 0

例 1:查询集合的元素个数

常用命令

A、zrangebyscore

语法:zrangebyscore key min max [WITHSCORES ] [LIMIT offset count]

作用:获取有序集 key 中,所有 score 值介于 min 和 max 之间(包括 min 和 max)的成员,有序成员是按递增(从小到大)排序。

min ,max 是包括在内 , 使用符号 ( 表示不包括。 min , max 可以使用 -inf 

+inf 表示最小和最大

limit 用来限制返回结果的数量和区间。

withscores 显 示 score 和 value

返回值:指定区间的集合数据

使用的准备数据

例 1:显示指定具体区间的数据

例 2:显示指定具体区间的集合数据,开区间(不包括 min,max)

例 3:显示整个集合的所有数据

例 4:使用 limit

增加新的数据:

显示从第一个位置开始,取一个元素。

B、 zrevrangebyscore

语法:zrevrangebyscore key max min [WITHSCORES ] [LIMIT offset count]

作用:返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。其他同 zrangebyscore

例 1:查询工资最高到 3000 之间的员工

C、 zcount

语法:zcount key min max

作用:返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量

例 1:求工资在 3000-5000 的员工数量