Redis基础数据类型之 ZSet (基础篇)

目录

1、Set 集合内操作命令

1-1、zadd 命令

1-2、zcard 命令

1-3、zscore 命令

1-4、zrank 命令

1-5、zrem 命令

1-6、zincrby 命令

1-7、zrange、zrevrange 命令

1-8、zrangebyscore 命令

1-9、zcount 命令

1-10、zremrangebyrank 命令

1-11、zremrangebyscore 命令

2、集合间操作命令

2-1、zinterstore 、zunionstore 命令

3、使用场景


  •  有序集合相对于哈希、列表、集合来说会有一点点陌生,但既然叫有序集合,那么它和集合必然有着联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数( score)作为排序的依据。
  • 有序集合中的元素不能重复,但是score可以重复,就和一个班里的同学学号不能重复,但是考试成绩可以相同。
  • 有序集合提供了获取指定分数和元素范围查询、计算成员排名等功能,合理的利用有序集合,能帮助我们在实际开发中解决很多问题。

1、Set 集合内操作命令

1-1、zadd 命令

# 返回结果代表成功添加成员的个数
# zadd命令还有四个选项nx、xx、ch、incr 四个选项
# nx: member必须不存在,才可以设置成功,用于添加。
# xx: member必须存在,才可以设置成功,用于更新。
# ch: 返回此次操作后,有序集合元素和分数发生变化的个数
# incr: 对score做增加,相当于后面介绍的zincrby
zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...] 

1-2、zcard 命令

# 计算成员个数
zcard key

1-3、zscore 命令

# 计算某个成员的分数,如果成员不存在则返回nil
zscore key member

1-4、zrank 命令

# 计算成员的排名,分数从低到高返回排名,排名从0开始计算
zrank key member

# 计算成员的排名,分数从高到低返回排名,排名从0开始计算
zrevrank key member

1-5、zrem 命令

# 删除成员,允许一次删除多个成员,返回结果为成功删除的个数
zrem key member [member ...]

1-6、zincrby 命令

# 增加成员的分数
zincrby key increment member

1-7、zrange、zrevrange 命令

# 有序集合是按照分值排名的,zrange是从低到高返回 
zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

# zrevrange反之。如果加上withscores选项,同时会返回成员的分数
zrevrange key start stop [WITHSCORES]

 

1-8、zrangebyscore 命令

# 返回指定分数范围的成员,从低到高
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

# 返回指定分数范围的成员,从高到低
zrevrangebyscore key max min [withscores][limit offset count]

# 例如从低到高返回200到221分的成员,withscores选项会同时返回每个成员的分数。
# 同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大

 

1-9、zcount 命令

# 返回指定分数范围成员个数
zcount key min max

1-10、zremrangebyrank 命令

# 按升序删除指定排名内的元素
zremrangebyrank key start stop

1-11、zremrangebyscore 命令

# 删除指定分数范围的成员
zremrangebyscore key min max

2、集合间操作命令

2-1、zinterstore 、zunionstore 命令

# 交集
zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

# 并集
zunionstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

# 这个命令参数较多,下面分别进行说明
# destination:交集计算结果保存到这个键;
# numkeys:需要做交集计算键的个数;
# key [key ...]:需要做交集计算的键;
# weights weight [weight ...]:每个键的权重,在做交集计算时,每个键中的每个member 会将自己分数乘以这个权重,每个键的权重默认是1;
# aggregate sum | min | max : 计算成员交集后,分值可以按照sum(和)、min(最小值)、max(最大值)做汇总,默认值是sum;

3、使用场景

有序集合比较典型的使用场景就是排行榜系统。例如视频网站需要对用户上传的视频做排行榜,榜单的维度可能是多个方面的:按照时间、按照播放数量、按照获得的赞数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值