redis zset



1. 有序集合(string)

有序集合类型 (Sorted Set或ZSet) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合保留了集合不能有重复成员的特性(分值可以重复),但不同的是,有序集合中的元素可以排序。

image


2. 内部实现

有序集合是由 ziplist (压缩列表) 或 skiplist (跳跃表) 组成的。

当数据比较少时,有序集合使用的是 ziplist 存储的,有序集合使用 ziplist 格式存储必须满足以下两个条件:

  • 有序集合保存的元素个数要小于 128 个;
  • 有序集合保存的所有元素成员的长度都必须小于 64 字节。

如果不能满足以上两个条件中的任意一个,有序集合将会使用 skiplist 结构进行存储。


3. 常用命令

命令 描述
zadd key score1 member1 [score2 member2] 添加集合或者更新
zcard key 获取集合数量
zcount key min max 获取集合中指定区间数量
zincrby key increment member 集合中对指定成员的数增量 increment
zinterstore destination numkeys key [key ...] 批量计算交集并将结果集存储在新的集合 destination 中
zlexcount key min max 在集合中计算指定字典区间内成员数量
zrange key start stop [WITHSCORES] 通过索引区间返回元素
zrangebylex key min max [LIMIT offset count] 通过字典区间返回元素
zrangebyscore key min max [WITHSCORES] [LIMIT] 通过分数返回指定区间内的成员
zrank key member 返回指定成员的索引
zrem key member [member ...] 批量移除集合元素
zremrangebylex key min max 移除给定的区间的成员
zremrangebyrank key start stop 移除给定排名区间元素
zremrangebyscore key min max 移除给定的分数区间元素
zrevrange key start stop [WITHSCORES] 返回指定区间内的成员,通过索引,分数从高到低
zrevrangebyscore key max min [WITHSCORES] 返回有指定分数区间内的成员,分数从高到低排序
zrevrank key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
zscore key member 返回有序集中,成员的分数值
zunionstore destination numkeys key [key ...] 计算给定的一个或多个有序集的并集,并存储在新的 key 中
zscan key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素

4. 使用场景

  1. 排行榜系统

    如学生成绩的排名。某视频网站的用户点赞、播放排名、电商系统中商品的销量排名

  2. 电话号码排序

    使用ZRANGEBYLEX或ZREVRANGEBYLEX可以帮助我们实现电话号码或姓名的排序

posted @   linsonga  阅读(210)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示