Redis 有序集(Sorted set)操作

本文展示了使用ZSet数据结构进行的操作实例,包括添加元素、获取指定范围内的元素及其分数等。通过具体的数据交互记录,帮助读者理解ZSet如何存储带有分数的成员,并按分数排序。
zadd grade2 200 item3
:0
zadd grade2 4000 item4
:1
zadd grade2 1000 item5
:1
zrange grade2 0 -1 withscores
*10
$5
item1
$3
100
$5
item3
$3
200
$5
item2
$3
300
$5
item5
$4
1000
$5
item4
$4

4000

zrange grade 0 -1 withscores

*6
$2
en
$2
40
$7
Chinese
$2
78
$4
math
$2
90
zrank grade math
:2
zrange grade1 0 -1 withscores
*4
$5
item1
$2
80
$5
item2
$2
90
zrank grade1 item1
:0


### RedisSorted Set 类型的相关信息 #### Sorted Set 数据结构概述 Sorted Set 是一种有序集合,其中每个成员都关联着一个分数(score),这个分数决定了该成员在这个集合中的顺序。如果多个成员具有相同的分数,则这些成员按照字典序排列[^1]。 #### 底层实现原理 Sorted Set 的底层是由跳跃表(skiplist)来实现的,这是一种可以在 O(log N) 时间复杂度内完成插入、删除以及范围查询操作的数据结构。相比于平衡树等其他可能的选择,跳跃表在并发环境下的表现更为出色,因此被选作 Redis 实现 Sorted Set 的基础数据结构[^2]。 #### 基本命令介绍 以下是几个常用的针对 Sorted Set 的命令: - **ZADD**: 向指定 key 对应的 sorted set 添加一个或多个 member 及其 score;如果某个 member 已经存在则会更新对应的 score。 ```bash ZADD myzset 1 "one" ZADD myzset 2 "two" ``` - **ZRANGE / ZREVRANGE**: 获取按升序/降序排序后的给定区间内的元素及其 scores。 ```bash ZRANGE myzset 0 -1 WITHSCORES ZREVRANGE myzset 0 -1 WITHSCORES ``` - **ZREM**: 移除 one 或 more 成员。 ```bash ZREM myzset "one" ``` - **ZCARD**: 返回集合中元素的数量。 ```bash ZCARD myzset ``` - **ZCOUNT**: 统计某范围内(score 范围)有多少个元素。 ```bash ZCOUNT myzset 1 2 ``` - **ZINCRBY**: 将已存在的 member 的 score 加上增量 increment。 ```bash ZINCRBY myzset 1 "two" ``` 更多高级功能还包括交集(ZINTERSTORE)、并集(ZUNIONSTORE)运算等功能,在实际应用中有广泛用途[^4]。 #### 场景案例分析 由于支持高效的排名计算和范围检索能力,Sorted Set 特别适合用来构建如下几种典型应用场景: - **排行榜系统**:基于用户的积分或者其他指标创建实时更新的排行榜; - **地理信息系统(GIS)**:存储地理位置坐标,并快速获取附近地点列表; - **社交网络好友推荐**:依据共同兴趣等因素为用户推送潜在朋友; - **缓存热点文章**:记录每篇文章访问次数以便于展示最受欢迎的内容[^3].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值