Redis数据类型之有序集合类型--Redis系列六

本文详细介绍了有序集合的基本操作,包括增加元素、获得元素分数、获得排名范围的元素列表、增加某个元素分数、获得集合中元素的数量等。此外,还讨论了如何计算有序集合的交集、删除元素、获得元素的排名以及如何使用这些操作进行更复杂的集合分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有序集合的时间复杂度是O(log(N))

1、增加元素

ZADD key score member[score member...]

ZADD命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在则会用新的分数替换原来的分数。

ZADD返回的是新加入到集合中元素的个数(不包含之前已经存在的元素)。

分数支持双精度浮点数。+inf和-inf分别表示正无穷和负值

支持两个元素的分数相同。

2、获得元素分数

ZSCORE key member

3、获得排名在某个范围的元素列表

ZRANGE key start stop [WITHSCORES]   start 和 stop指的是元素位置

ZREVRANGE key start stop [WITHSCORES] 按照分数从大到小

ZRANGE命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端元素),负值代表从后向前查找

WITHSCORES会带分数返回,如果两个元素分数一样,会按照字典顺序来进行排序;

时间复杂度O(logn+m),n为有序集合的基数,m为返回元素个数。

4、获得指定分数范围内的元素

ZRANGEBYSCORE key min max  [WITHSCORES] [LIMIT offset count]

1)该命令按照元素从小到大的顺序返回分数在min和max之间(包含min和max)的元素

2)如果不想包含端点,可以在分数前面加上"(",例如 ZRANGEBYSCORE  board 80 (100

3)也支持-inf 和+inf

4)[LIMIT offset count] 和SQL中用法类似 向后偏移offset个元素,并且只获取前count个元素

 例如ZRANGEBYSCORE board 60 +inf LIMIT 1 3 是获得分数高于60分的从第二个人开始的三个人

5、增加某个元素分数

ZINCRBY key increment member 

返回值是更改后的分数

6、获得集合中元素的数量

ZCARD key

7、获得指定范围内元素个数

ZCOUNT key min max

8、删除一个或多个元素

ZREM key member[memeber...]

9、按照排名范围删除元素

ZREMRANGEBYRANK key start stop 

按照分数从小到大的顺序(即索引0表示最小的值)删除在指定排名范围内的所有元素,并返回删除元素数量

10、按照分数范围删除元素

ZREMRANGESCORE key min max

11、获得元素的排名

ZRANK key member 从0开始 即分数最小的元素排名为0

ZREVRANK key member 逆向排序 分数最大的为0 

12、计算有序集合的交集

ZINTERSTORE destination numkeys key [key...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

ZINTERSTORE命令用来计算多个有序集合的交集并将结果存储在destination键中(同样以有序集合类型存储),返回值是destination键中元素个数

1)当AGGREGATE是sum时destination 键中元素分数是每个参与计算的集合中该元素分数的和。

2)AGGREGATE是min时destination 键中元素分数是每个参与计算的集合中该元素分数最小值。

3)AGGREGATE是min时destination 键中元素分数是每个参与计算的集合中该元素分数最大值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值