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"
集合运算
ZUNIONSTORE和ZINTERSTORE支持多个ZSET的并集与交集运算:
ZUNIONSTORE outzset 2 zset1 zset2 WEIGHTS 1 2
WEIGHTS指定集合的权重,分数会乘以权重后计算。
应用场景
- 排行榜:利用分数排序特性实现实时排名。
- 延迟队列:将时间戳作为分数,定期查询到期任务。
- 优先级调度:分数表示优先级,按优先级处理任务。
- 范围查询:如地理坐标附近的地点查询。
性能注意事项
- 避免对大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

查看3道真题和解析