Redis ZSET详解:玩转有序集合

Redis ZSET(Sorted Set)数据类型详解

ZSET(Sorted Set)是Redis中一种特殊的数据结构,它结合了集合(Set)和有序列表的特性。每个元素都有一个分数(score),Redis根据分数对元素进行排序,且元素唯一。

ZSET的核心特性

  • 元素唯一性:与Set类似,ZSET中的元素不允许重复。
  • 有序性:元素按分数(score)排序,分数可重复。
  • 高效操作:支持插入、删除、范围查询等操作,时间复杂度为O(log N)。

常用指令及示例

添加元素

使用ZADD向ZSET中添加元素,并指定分数:

ZADD myzset 1 "one" 2 "two" 3 "three"
  • 若元素已存在,则更新其分数。
  • 支持多元素批量添加。

查询元素分数

通过ZSCORE获取指定元素的分数:

ZSCORE myzset "one"

范围查询

ZRANGE按索引范围返回元素(升序):

ZRANGE myzset 0 -1 WITHSCORES

ZREVRANGE按索引范围返回元素(降序):

ZREVRANGE myzset 0 -1 WITHSCORES
  • WITHSCORES选项可同时返回分数。

按分数范围查询

ZRANGEBYSCORE查询分数范围内的元素:

ZRANGEBYSCORE myzset 1 2

ZREVRANGEBYSCORE按降序返回分数范围内的元素:

ZREVRANGEBYSCORE myzset 2 1

删除元素

ZREM删除指定元素:

ZREM myzset "one"

ZREMRANGEBYRANK按索引范围删除:

ZREMRANGEBYRANK myzset 0 1

ZREMRANGEBYSCORE按分数范围删除:

ZREMRANGEBYSCORE myzset 1 2

统计操作

ZCARD获取ZSET中元素数量:

ZCARD myzset

ZCOUNT统计分数范围内的元素数量:

ZCOUNT myzset 1 3

排名查询

ZRANK获取元素升序排名(从0开始):

ZRANK myzset "two"

ZREVRANK获取元素降序排名:

ZREVRANK myzset "two"

分数增减

ZINCRBY增减元素的分数:

ZINCRBY myzset 2 "one"

集合运算

ZUNIONSTOREZINTERSTORE支持多个ZSET的并集与交集运算:

ZUNIONSTORE outzset 2 zset1 zset2 WEIGHTS 1 2
  • WEIGHTS指定集合的权重,分数会乘以权重后计算。

应用场景

  1. 排行榜:利用分数排序特性实现实时排名。
  2. 延迟队列:将时间戳作为分数,定期查询到期任务。
  3. 优先级调度:分数表示优先级,按优先级处理任务。
  4. 范围查询:如地理坐标附近的地点查询。

性能注意事项

  • 避免对大ZSET频繁执行范围查询,可能阻塞Redis。
  • 分数设计应尽量均匀分布,防止排序性能下降。
  • 合理使用ZSCAN替代全量遍历超大ZSET。

通过灵活使用ZSET的指令,可以高效解决多种有序数据管理问题。

BbS.okapop163.sbs/PoSt/1122_108864.HtM
BbS.okapop165.sbs/PoSt/1122_483793.HtM
BbS.okapop166.sbs/PoSt/1122_335017.HtM
BbS.okapop167.sbs/PoSt/1122_860092.HtM
BbS.okapop168.sbs/PoSt/1122_280004.HtM
BbS.okapop169.sbs/PoSt/1122_579159.HtM
BbS.okapop170.sbs/PoSt/1122_139690.HtM
BbS.okapop171.sbs/PoSt/1122_880939.HtM
BbS.okapop172.sbs/PoSt/1122_270946.HtM
BbS.okapop173.sbs/PoSt/1122_012577.HtM
BbS.okapop163.sbs/PoSt/1122_134350.HtM
BbS.okapop165.sbs/PoSt/1122_979202.HtM
BbS.okapop166.sbs/PoSt/1122_632779.HtM
BbS.okapop167.sbs/PoSt/1122_036542.HtM
BbS.okapop168.sbs/PoSt/1122_037280.HtM
BbS.okapop169.sbs/PoSt/1122_536906.HtM
BbS.okapop170.sbs/PoSt/1122_131743.HtM
BbS.okapop171.sbs/PoSt/1122_552458.HtM
BbS.okapop172.sbs/PoSt/1122_917642.HtM
BbS.okapop173.sbs/PoSt/1122_711482.HtM
BbS.okapop174.sbs/PoSt/1122_687444.HtM
BbS.okapop175.sbs/PoSt/1122_363653.HtM
BbS.okapop176.sbs/PoSt/1122_097738.HtM
BbS.okapop177.sbs/PoSt/1122_782663.HtM
BbS.okapop178.sbs/PoSt/1122_134385.HtM
BbS.okapop179.sbs/PoSt/1122_642887.HtM
BbS.okapop180.sbs/PoSt/1122_703396.HtM
BbS.okapop181.sbs/PoSt/1122_988522.HtM
BbS.okapop182.sbs/PoSt/1122_979546.HtM
BbS.okapop183.sbs/PoSt/1122_668124.HtM
BbS.okapop174.sbs/PoSt/1122_786217.HtM
BbS.okapop175.sbs/PoSt/1122_097145.HtM
BbS.okapop176.sbs/PoSt/1122_475022.HtM
BbS.okapop177.sbs/PoSt/1122_369521.HtM
BbS.okapop178.sbs/PoSt/1122_408525.HtM
BbS.okapop179.sbs/PoSt/1122_110420.HtM
BbS.okapop180.sbs/PoSt/1122_146894.HtM
BbS.okapop181.sbs/PoSt/1122_103740.HtM
BbS.okapop182.sbs/PoSt/1122_833727.HtM
BbS.okapop183.sbs/PoSt/1122_886328.HtM
BbS.okapop174.sbs/PoSt/1122_461835.HtM
BbS.okapop175.sbs/PoSt/1122_705996.HtM
BbS.okapop176.sbs/PoSt/1122_115874.HtM
BbS.okapop177.sbs/PoSt/1122_467581.HtM
BbS.okapop178.sbs/PoSt/1122_762008.HtM
BbS.okapop179.sbs/PoSt/1122_733316.HtM
BbS.okapop180.sbs/PoSt/1122_724875.HtM
BbS.okapop181.sbs/PoSt/1122_150667.HtM
BbS.okapop182.sbs/PoSt/1122_853951.HtM
BbS.okapop183.sbs/PoSt/1122_983993.HtM
BbS.okapop174.sbs/PoSt/1122_360586.HtM
BbS.okapop175.sbs/PoSt/1122_679057.HtM
BbS.okapop176.sbs/PoSt/1122_701963.HtM
BbS.okapop177.sbs/PoSt/1122_258569.HtM
BbS.okapop178.sbs/PoSt/1122_602217.HtM
BbS.okapop179.sbs/PoSt/1122_135434.HtM
BbS.okapop180.sbs/PoSt/1122_888410.HtM
BbS.okapop181.sbs/PoSt/1122_266623.HtM
BbS.okapop182.sbs/PoSt/1122_719129.HtM
BbS.okapop183.sbs/PoSt/1122_405626.HtM
BbS.okapop174.sbs/PoSt/1122_208327.HtM
BbS.okapop175.sbs/PoSt/1122_995700.HtM
BbS.okapop176.sbs/PoSt/1122_394328.HtM
BbS.okapop177.sbs/PoSt/1122_452593.HtM
BbS.okapop178.sbs/PoSt/1122_867888.HtM
BbS.okapop179.sbs/PoSt/1122_645817.HtM
BbS.okapop180.sbs/PoSt/1122_716212.HtM
BbS.okapop181.sbs/PoSt/1122_185351.HtM
BbS.okapop182.sbs/PoSt/1122_593290.HtM
BbS.okapop183.sbs/PoSt/1122_546449.HtM
BbS.okapop174.sbs/PoSt/1122_810214.HtM
BbS.okapop175.sbs/PoSt/1122_438954.HtM
BbS.okapop176.sbs/PoSt/1122_435975.HtM
BbS.okapop177.sbs/PoSt/1122_308148.HtM
BbS.okapop178.sbs/PoSt/1122_290331.HtM
BbS.okapop179.sbs/PoSt/1122_885056.HtM
BbS.okapop180.sbs/PoSt/1122_461927.HtM
BbS.okapop181.sbs/PoSt/1122_737515.HtM
BbS.okapop182.sbs/PoSt/1122_238472.HtM
BbS.okapop183.sbs/PoSt/1122_384679.HtM

#牛客AI配图神器#

全部评论

相关推荐

Java抽象带篮子:投java岗就写java,真别写c,c++,python,css了,进去让你搞这些你又不乐意
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务