Redis的数据类型4:有序集合

时间:2024-05-19 07:44:32

Redis的数据类型4:有序集合

1.zadd: 添加或更新成员

zadd sorted_set score member

一次更新操作,没有添加任何新成员,命令返回0。

带有XX选项的ZADD命令只会对有序集合已有的成员进行更新,而不会向有序集合添加任何新成员。
带有NX选项的ZADD命令只会想有序集合添加新成员,而不会对已有的成员进行任何的更新。

在默认情况下,ZADD命令会返回新添加成员的数量作为返回值,但是自从用户可以通过给定CH选项,让ZADD命令返回被修改成员的数量作为返回值:
“被修改的成员”指的是新添加到有序集合的成员,以及分值被更新了的成员。
执行命令,返回值得到2,表示这个命令修改了两个成员。

Redis的数据类型4:有序集合

2.zrem: 移除指定成员

Redis的数据类型4:有序集合

3.zscore: 获取成员分值

zscore sorted_set number

Redis的数据类型4:有序集合

4.zincrby: 对成员的分值执行自增或自减操作

zincrby sorted_set increment member

Redis的数据类型4:有序集合

5.zcard: 获取有序集合的大小 zcard sorted_set

Redis的数据类型4:有序集合

6.zrank【升序】,zrevrank【降序】:获取成员在有序集合中的排名

zrank sorted_set member
zrevrank sorted_set member

Redis的数据类型4:有序集合

7.zrange【升序】,zrevrange【降序】:获取指定索引范围内的成员

zrange sorted_set start end
zrevrange sorted_set start end

在默认情况下,ZRANGE命令和ZREVRANGE命令只会返回指定索引范围内的成员,如果用户想要在获取这些成员的同时也获取与之相关联的分值,那么可以在调用ZRANGE和ZREVRANGE命令的时候,给定可选的WITHSCORES选项。

如果用户给定的有序集合不存在,那么ZRANGE和ZREVRANGE命令将会返回一个空列表。
Redis的数据类型4:有序集合

8.zrangebyscore【升序】,zrevrangebyscor【降序】:获取指定分值范围内成员

zrangebyscore sorted_set min max
zrevrangebyscor sorted_set min max

命令的min参数和max参数分别用于指定用户想要获取成员的最小分值和最大分值。

不过zrangebyscore命令和zrevrangebyscor命令接收min参数和max参数的顺序正好相反;zrangebyscore命令先接受min参数后接受max参数,而zrevrangebyscor命令先接受max参数后接受min参数。
Redis的数据类型4:有序集合

8.1获取成员及其分值

与zrange命令和zrevrange命令类似,zrangebyscore命令和zrevrangebyscor命令也可以通过在执行时给定可选的WITHSCORES选项来同时获取成员及其分值。
zrangebyscore sorted_set min max [WITHSCORES]
zrevrangebyscor sorted_set min max [WITHSCORES]
Redis的数据类型4:有序集合

8.2限制命令返回的成员数量

zrangebyscore sorted_set min max [LIMIT offset count]
zrevrangebyscor sorted_set min max [LIMIT offset count]

在默认情况下,zrangebyscore命令和zrevrangebyscor命令会直接返回给定分值范围内的所有成员,但如果范围内的成员数量较多,或者我们只需要范围内的其中一部分成员,那么可以使用LIMIT选项来限制命令返回的成员数量。
LIMIT选项接受offset和count两个参数作为输入,其中offset参数用于指定命令在返回结果之前需要跳过的成员数量,而count参数用于指示命令最多可以返回多少个成员。
Redis的数据类型4:有序集合

8.3使用开区间分值范围

在默认情况下,zrangebyscore命令和zrevrangebyscor命令接受的分值范围都是闭区间分值范围,也就是说,分值等于用户给定最大分值或者最小分值的成员也会被包含在结果当中。

分值等于3500或者5000的成员也会被包含在结果中。

如果用户想要定义的是开区间而不是闭区间,那么就可以在给定分值范围时,在分值参数前面加上一个单括号(,这样,具有给定分值的成员就不会出现在命令返回的结果当中。

分值大于3500且小于5000的成员也会被包含在结果中。

Redis的数据类型4:有序集合
分值大于等于3500且小于5000的成员也会被包含在结果中。
分值大于3500且小于等于5000的成员也会被包含在结果中。

Redis的数据类型4:有序集合

8.4使用无限值作为范围

-inf代表无穷小
+inf代表无穷大

Redis的数据类型4:有序集合

9.zcount: 统计指定分值范围内的成员数量

zcount sorted_set min max

Redis的数据类型4:有序集合