目录
1. 有序集合概述
Redis 的 有序集合(Sorted Set) 是集合的升级版,每个元素除了值之外,还有一个与之关联的 分数(score),并且集合会根据分数从小到大自动排序。
元素的唯一性由成员值(member)决定,分数(score)则决定排序。
2. 有序集合的典型使用场景
- 排行榜系统:如游戏积分排行榜、文章热度排行
- 延迟任务队列:分数表示执行时间,实现定时任务调度
- 带权重的推荐系统:按评分或活跃度排序推荐内容
- 时间线系统:分数使用时间戳,实现按时间排序的记录
3. 有序集合常用命令
命令 | 描述 |
---|---|
ZADD key score member [score member ...] | 添加元素并设置分数 |
ZRANGE key start stop [WITHSCORES] | 返回指定索引区间的成员 |
ZREVRANGE key start stop [WITHSCORES] | 返回倒序成员 |
ZREM key member [member ...] | 移除一个或多个元素 |
ZSCORE key member | 获取成员的分数 |
ZINCRBY key increment member | 对成员的分数增加 |
ZCARD key | 获取集合元素数量 |
ZRANK key member | 获取成员的排名(从 0 开始) |
ZCOUNT key min max | 获取分数在某范围内的成员个数 |
ZREMRANGEBYSCORE key min max | 删除指定分数区间的成员 |
4. 有序集合的高级用法
- 热度排行:根据浏览量、点赞数更新 score,实现热门推荐功能。
- 延迟队列:使用时间戳作为分数,结合
ZRANGEBYSCORE
实现定时任务。 - 分数变动排行榜:使用
ZINCRBY
动态更新用户积分、排名实时变化。 - 按范围分页:
ZRANGE
搭配LIMIT
实现排行榜分页查看。
5. 使用注意事项
- 分数可以重复,成员不可以重复
- 适合用于排序/打分系统,但不适合频繁大批量修改操作
- 避免使用过大范围的
ZREMRANGEBYSCORE
,可能会阻塞服务器 - 支持负数和小数分数,但精度控制需注意
发表回复