09 Redis SortedSet类型操作与使用场景

Redis SortedSet类型操作与使用场景

一、SortedSet类型操作

​ SortedSet的常见命令有:

​ ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值

# 添加多个sorted
127.0.0.1:6379> zadd english:scores 85 zh 82 w 79 t 90 l
4

​ ZRANGE key min max:按照score排序后,获取指定排名范围内的元素

# -1表示最后一位
127.0.0.1:6379> zrange english:scores 0 -1
t
w
zh
l

​ ZREM key member:删除sorted set中的一个指定元素

# 删除元素
127.0.0.1:6379> zrem english:scores zh
1

​ ZSCORE key member : 获取sorted set中的指定元素的score值

# 获取值
127.0.0.1:6379> zscore english:scores l
90

​ ZRANK key member:获取sorted set 中的指定元素的排名

# 获取排名
127.0.0.1:6379> zrank english:scores l
2

​ ZCARD key:获取sorted set中的元素个数

# 统计元素个数
127.0.0.1:6379> zcard english:scores
3

​ ZCOUNT key min max:统计score值在给定范围内的所有元素的个数

# 统计范围内元素个数
127.0.0.1:6379> zcount english:scores 85 90
2

​ ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值

# 元素自增
127.0.0.1:6379> zincrby english:scores 5 w
87

​ ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素

# 排序后范围内元素
127.0.0.1:6379> zrangebyscore english:scores 80 90
w
l

​ ZDIFF、ZINTER、ZUNION:求差集、交集、并集

# 添加多个sorted
127.0.0.1:6379> zadd math:scores 85 zh 82 w 79 t 90 l
4

# 差集
127.0.0.1:6379> zdiff 2 math:scores english:scores
zh

# 交集
127.0.0.1:6379> zinter 2 math:scores student:scores withscores
t
158
w
169
l
180

# 并集
127.0.0.1:6379> zunion 2 math:scores english:scores
zh
t
w
l

​ 注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可,例如:

​ 升序:获取sorted set 中的指定元素的排名:ZRANK key member

# 升序排名
127.0.0.1:6379> zrank english:scores l
3

​ 降序:获取sorted set 中的指定元素的排名:ZREVRANK key memeber

# 降序排名
127.0.0.1:6379> zrevrank english:scores zh
1

二、使用场景

​ Sorted Set在Redis中主要用于存储带有排序功能的数据集合,以下是几个典型的使用场景:

排行榜系统:

​ Sorted Set可以按照元素的分数进行排序,因此非常适合用于实现各种排行榜系统。例如,游戏排名、销售额排名等。

按照分数范围获取元素:

​ Sorted Set支持按照分数范围来获取元素,因此可以用于实现按照价格区间来筛选商品、按照评分区间来筛选电影等功能。

带权重的任务队列:

​ Sorted Set可以按照元素的分数进行排序,因此可以用于实现带权重的任务队列。例如,一些重要的任务可以设置较高的分数,让队列优先处理这些任务。

定时任务:

​ Sorted Set中的元素可以设置一个过期时间,因此可以用于实现定时任务。例如,在指定的时间自动执行某些操作。

日志按级别存储:

​ 可以使用Sorted Set存储日志信息,将日志级别作为分数,这样可以方便地按级别查询和统计日志信息。

分布式锁:

​ Sorted Set可以用于实现分布式锁,将锁的过期时间作为分数,这样可以避免死锁的发生。

​ 社交功能中的“附近的人”:在社交类应用中,“附近的人”是一个常见的功能,需要计算用户之间的距离并进行排序。Sorted Set可以按照地理位置的分数进行排序,因此可以用于实现这个功能。

实时统计在线人数:

​ Sorted Set可以按照用户的最后活跃时间作为分数,这样可以方便地统计当前在线人数和最近活跃用户列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值