本篇文章给大家带来了关于Redis的相关知识,其中主要整理了有序集合zset的相关问题,redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合,下面一起来看一下,希望对大家有帮助。

redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分
到最高分的方式排序集合中的成员。
集合的成员是唯一的,但是评分是可以重复的。
因为元素是有序的,所以你可以很快的根据评分(score)或者次序(position)来获取一个范围的元
素。
访问有序集合中的中间元素也是非常快的,因为你能够使用有序集合作为一个没有重复成员你的智能列
表。
zadd:添加元素
在这里插入图片描述
zrange:score升序,获取指定索引范围的元素
返回存储在有序集合 key 中的指定范围的元素。 返回的元素可以认为是按score从最低到最
高排列,如果得分相同,将按字典排序。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表
示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
zrange key 0 -1:可以获取所有元素
withscores:让成员和它的 score 值一并返回,返回列表以 value1,score1, …, valueN,scoreN 的格式表示
可用版本:

= 1.2.0
时间复杂度:
O(log(N)+M), N 为有序集的基数,而 M 为结果集的基数。
返回值:
指定区间内,带有 score 值(可选)的有序集成员的列表
在这里插入图片描述
zrevrange:score降序,获取指定索引范围的元素
返回存储在有序集合 key 中的指定范围的元素。 返回的元素可以认为是按score最高到最低
排列, 如果得分相同,将按字典排序。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表
示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
withscores:让成员和它的 score 值一并返回,返回列表以 value1,score1, …, valueN,scoreN 的格式表示
在这里插入图片描述

zrangebyscore:按照score升序,返回指定score范围内的数据
在这里插入图片描述
zincrby:为指定元素的score加上指定的增量
在这里插入图片描述zrem:删除集合中多个元素
在这里插入图片描述
zremrangebyrank:根据索引范围删除元素
在这里插入图片描述
zremrangebyscore:根据score的范围删除元素
在这里插入图片描述
zcount:统计指定score范围内元素的个数
在这里插入图片描述
zrank:按照score升序,返回某个元素在集合中的排名

在这里插入图片描述
zrevrank:按照score降序,返回某个元素在集合中的排名
在这里插入图片描述
zscore:返回集合中指定元素的score

在这里插入图片描述
数据结构
SortedSet(zset)是redis提供的一个非常特别的数据结构,内部使用到了2种数据结构。
1、hash表
类似于java中的Map<String,score>,key为集合中的元素,value为元素对应的score,可以用来快速定
位元素定义的score,时间复杂度为O(1)
2、跳表
跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入、删除、查找的复杂度均为O(logN)。
类似java中的ConcurrentSkipListSet,根据score的值排序后生成的一个跳表,可以快速按照位置的顺
序或者score的顺序查询元素。

以上就是归纳总结Redis有序集合zset知识点的详细内容,转载自php中文网

点赞(818) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部