redis 常用数据类型操作五 有序集合(zset)
redis 有序集合(zset)
简介
redis的有序集合zset和普通集合set极其相似,是一个 没有重复元素的字符串集合
不同之处是有序集合的每个成员都关联了一个 评分(score) 这个评分(score) 被用来按照从最低份到最高分的方式排序集合中的成员。集合中的成员是唯一的,但是评分是可以重复了
因为元素的上有序的,所以可以很快的根据评分(score)或者次序(position)来获取一个范围内的元素
访问有序集合的中间元素也是非常快的,因此能够使用有序集合做一个没有重复成员的智能列表。
常用命令
zadd <key> <score1> <value1> <score2><value2>:将一个或多个member元素及其score值加入到有序集合key中
zrange <key> <start> <stop> [WITHSCORES] 返回有序集合key中,下标在 <strat> 和<stop>之间的元素,带有WITHSCORES可以让分数和值一起返回到结果集
zrangebyscores key min max [withscores] [limit offset count]:返回有序集合key中,所有score值介于min和max 之间(包括等于min或max)的成员。有序结合按score值递增(从小到大)次序排列
zrevrangebyscores key max min[withscores] [limit offset count] 同上 ,改为从大到小排列
zincryby <key> <increment> <value> <member>为元素的score加上增量
zrem <key> <value> 删除该集合下,指定值的元素
zcount <key> <min> <max> 统计该集合,分数区间内元素个数
zrank <key> <value> 返回该值在集合中的排名从0开始
数据结构
zset是redis 提供的一个非常特殊的数据结构,一方面他等价于c#的Dictionary<string,double>,可以给每一个value赋予一个权重score,另一方面它又类似于TreeSet,内部元素会按照权重score进行排序,可以得到每个元素名次,还可以通过score的范围来获取元素列表。
zset底层使用了两个数据结构
(1)hash,hash的作用就是关联value的权重score,保障value的唯一性,可以通过value找到对应score值
(2)跳跃表,跳跃表的目的是在于给元素value排序,根据socre的范围来获取元素列表。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库