目录

  1. 有序集合概述
  2. 有序集合的典型使用场景
  3. 有序集合常用命令
  4. 有序集合的高级用法
  5. 使用注意事项
  6. 参考资料

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,可能会阻塞服务器
  • 支持负数和小数分数,但精度控制需注意

6. 参考资料