4. 有序集合数据类型
有序集合(Sorted Set)数据类型是在集合的基础上加入了一个权重(Score)属性,使得集合中的元素可以按照权重值进行有序排列。每个元素是唯一的,但是可以有不同的权重。
在Redis中,有序集合使用一个哈希表和一个跳跃表(Skip List)来实现,哈希表用来存储元素的值和对应的权重,跳跃表则用来维护元素的有序性。
4.1. ZADD
ZADD命令用于向有序集合中添加一个或多个元素,语法为:
代码语言:javascript复制ZADD key score member [score member ...]
其中,key
为有序集合的键名,score
为元素的权重值,member
为元素的值。可以添加多个元素,每个元素之间用空格分隔。
例如,要向键名为zset
的有序集合中添加元素apple
,权重为1
,可以使用以下命令:
ZADD zset 1 apple
4.2. ZCARD
ZCARD命令用于获取有序集合中元素的数量,语法为:
代码语言:javascript复制ZCARD key
其中,key
为有序集合的键名。
例如,要获取键名为zset
的有序集合中元素的数量,可以使用以下命令:
ZCARD zset
4.3. ZCOUNT
ZCOUNT命令用于获取有序集合中权重在指定范围内的元素数量,语法为:
代码语言:javascript复制ZCOUNT key min max
其中,key
为有序集合的键名,min
和max
为权重的最小值和最大值,可以使用-inf
和 inf
表示最小值和最大值。
例如,要获取键名为zset
的有序集合中权重在1
到3
之间的元素数量,可以使用以下命令:
ZCOUNT zset 1 3
4.4. ZINCRBY
ZINCRBY命令用于给有序集合中指定元素的权重值增加一个指定的数值,语法为:
代码语言:javascript复制ZINCRBY key increment member
其中,key
为有序集合的键名,increment
为要增加的数值,member
为要增加权重的元素的值。
例如,要将键名为zset
的有序集合中元素apple
的权重增加3
,可以使用以下命令:
ZINCRBY zset 3 apple
4.5. ZRANGE
ZRANGE命令用于获取有序集合中指定索引范围内的元素,语法为:
代码语言:javascript复制ZRANGE key start stop [WITHSCORES]
其中,key
为有序集合的键名,start
和stop
为索引的起始值和结束值,可以使用-1
表示最后一个元素,WITHSCORES
参数用于同时返回元素的权重值。
例如,要获取键名为zset
的有序集合中索引从0
到2
的元素,可以使用以下命令:
ZRANGE zset 0 2
4.6. ZRANK
ZRANK命令用于获取有序集合中指定元素的排名,语法为:
代码语言:javascript复制ZRANK key member
其中,key
为有序集合的键名,member
为要查询排名的元素的值。排名从0
开始,表示排在最前面的元素。
例如,要获取键名为zset
的有序集合中元素apple
的排名,可以使用以下命令:
ZRANK zset apple
4.7. ZREM
ZREM命令用于从有序集合中移除指定的元素,语法为:
代码语言:javascript复制ZREM key member [member ...]
其中,key
为有序集合的键名,member
为要移除的元素的值,可以同时移除多个元素,每个元素之间用空格分隔。
例如,要从键名为zset
的有序集合中移除元素apple
,可以使用以下命令:
ZREM zset apple
4.8. ZREVRANGE
ZREVRANGE命令用于获取有序集合中指定索引范围内的元素,并按照权重值从大到小排序,语法为:
代码语言:javascript复制ZREVRANGE key start stop [WITHSCORES]
其中,key
为有序集合的键名,start
和stop
为索引的起始值和结束值,可以使用-1
表示最后一个元素,WITHSCORES
参数用于同时返回元素的权重值。
例如,要获取键名为zset
的有序集合中权重值从大到小排序后索引从0
到2
的元素,可以使用以下命令:
ZREVRANGE zset 0 2
4.9. ZREVRANK
ZREVRANK命令用于获取有序集合中指定元素的倒序排名,语法为:
代码语言:javascript复制ZREVRANK key member
其中,key
为有序集合的键名,member
为要查询排名的元素的值。排名从0
开始,表示排在最后面的元素。
例如,要获取键名为zset
的有序集合中元素apple
的倒序排名,可以使用以下命令:
ZREVRANK zset apple
4.10. ZSCORE
ZSCORE命令用于获取有序集合中指定元素的权重值,语法为:
代码语言:javascript复制ZSCORE key member
其中,key
为有序集合的键名,member
为要查询权重值的元素的值。
例如,要获取键名为zset
的有序集合中元素apple
的权重值,可以使用以下命令:
ZSCORE zset apple