Redis 有序集合(Sorted Set)

Redis 有序集合(Sorted Set)和集合(Set)的相同点是,都是 String 类型元素的集合,且都不允许出现重复元素。不同的是有序集合的每个元素都会关联一个 double 类型的分数,而 Redis 正是通过分数来为集合中的成员进行从小到大的排序。虽然有序集合的元素是唯一的,但是元素对应的分数(score)却是可以重复。

有序集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是 O(1)。集合中最大成员数为 2^32 - 1 (4294967295)个。

Redis 中有序集合(Sorted Set)的相关命令如下:

Redis 有序集合(Sorted Set) 命令
命令说明返回值示例
ZADD key score1 member1 [score2 member2]用于将一个或多个成员及其分数值加入到有序集合 key 中,如果某个成员已经是该有序集合的成员,则更新其分数值,并重新插入,以确保该成员在正确的位置上,分数值可以是整数值或双精度浮点数。如果指定的 key 不存在,则创建一个空的有序集合并执行 ZADD 操作,当 key 存在但不是有序集合类型时,返回一个错误被成功添加的新成员的数量,不包括被更改的和已经存在的成员A3BrHGXV9oFbAAAAAElFTkSuQmCCwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZRANGE key start stop [WITHSCORES]用于返回有序集合中执行区间内的成员,其中成员的位置按照分数值从小到大排列,具有相同分数值的成员按照字典序来排列,下标 start 和 stop 都以 0 为底,即有序集合中的第一个成员的下标是 0,同时也可以使用负数下标,-1 表示最后一个成员,-2 表示倒数第二个成员返回指定区间内,带有分数值(可选)的有序集合内的成员列表X+wyJ4JkJyTcAAAAABJRU5ErkJggg==wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZRANGEBYSCORE key min max [WITHSCORES]用于返回有序集合中指定分数区间的成员列表,有序集合中成员按照分数值递增的顺序排列,具有相同分数值的成员按照字典序升序来排列。默认为闭区间[min, max]返回指定区间内,带有分数值(可选)的有序集合内的成员列表+nIzNGDXsRUAAAAASUVORK5CYII=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZCARD key用于计算有序集合中的元素的数量当 key 存在且是有序集合类型时,返回有序集合中元素的数量,当 key 不存在时,返回 0nX0Aa44OslAAAAABJRU5ErkJggg==wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZCOUNT key min max用于计算有序集合中执行分数区间的成员数量返回分数值在 min 和 max 之间的成员数量,闭区间[min, max]o+M7IQ0mljSC93AAAA4EiXeP9Fggk8NnHb4nUxAAAA4Nv8vHgDAAAAbwPiDQAAALwMiDcAAADwMiDeAAAAwMuAeIPXIKR29ob85gAA8HT+D0j2XkDWCiTeAAAAAElFTkSuQmCCwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZLEXCOUNT key min max用于计算有序集合中指定字典区间内的成员数量返回指定字典区间内的成员数量
ZRANGE BYLEX key min max [LIMIT offset count]用于通过字典区间返回有序集合的成员返回指定区间内的元素列表
ZRANK key member用于返回有序集合中指定成员的排名,也可以理解为索引,其中有序集合中成员按照分数递增顺序排列返回指定成员 member 的索引(从 0 开始)4mbTACjvdRWAAAAAElFTkSuQmCCwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZREVRANGE key start stop [WITHSCORES]与 ZRANGE 命令相似,用于返回有序集合中指定区间内的成员,其中成员的位置按照分数值递减来排列,具有相同分数值的成员,按照字典的升序排列返回指定区间内带有分数值(可选)的有序集合成员列表Y8AAAAASUVORK5CYII=wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZREVRANGEBYSCORE key max min [WITHSCORES]与 ZRANGEBYSCORE 命令相似,用于返回有序集合中指定分数区间的成员列表,有序集合中成员按照分数值递减的顺序排列,具有相同分数值的成员按照字典序逆序来排列。默认为闭区间[max, min]返回指定区间内带有分数值(可选)的有序集合成员列表wNdc3PjtCTOKAAAAABJRU5ErkJggg==wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZREVRANK key member与 ZRANK 命令相似,用于返回有序集合中指定成员的排名,也可以理解为索引,其中有序集合中成员按照分数递减顺序排列返回指定成员 member 的索引(从 0 开始)10nCEKgkV+wAAAAAElFTkSuQmCCwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZSCORE key member返回有序集合中成员 member 的分数值成员的分数值,以字符串形式表示,当 key 或者 member 不存在时,返回 nil
ZINTERSTORE distination numkeys key1 [key2 ...]用于计算给定的一个或多个有序集合的交集,其中给定 key1 的数量必须以 keynums 参数指定,并将该交集结果集存储到 destination 中。目标有序集合 destination 中某个成员的分数值是所有给定集合下的该成员分数值之和保存到目标结果集中的成员的数量
ZUNIONSTORE destination numkeys key1 [key2 ...]用于计算给定的一个或多个有序集合的交集,其中给定 key1 的数量必须以 keynums 参数指定,并将该交集结果集存储到 destination 中。目标有序集合 destination 中某个成员的分数值是所有给定集合下的该成员分数值之和保存到目标结果集中的成员的数量Ay6WlBElZhM3AAAAAElFTkSuQmCCwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
ZINCRBY key increment member对有序集合中指定成员的分数加上指定的增量,增量可为负值member 成员的新的分数值,以字符串形式表示
ZSCAN key cursor [MATCH pattern] [COUNT count]用于迭代有序集合中的元素,包括元素成员和元素的分值返回的每一个元素都是一个有序集合元素,由成员 member 和分值 score 组成
ZREM key member [member ...]用于移除有序集合中的一个或多个成员,不存在的成员将被忽略。当 key 不存在或者不是有序集合类型时,返回一个错误返回被成功移除的元素的数量,不包括被忽略的成员
ZREMRANGEBYLEX key min max用于移除有序集合中给定的字典区间的所有成员返回被成功移除的元素的数量,不包括被忽略的成员
ZREMRANGEBYRANK key start stop用于移除有序集合中指定排名区间内的所有成员返回被移除成员的数量
ZREMRANGEBYSCORE key min max用于移除有序集合中指定分数区间内的所有成员返回被移除成员的数量

目前对于有关 LEX 的命令理解与官方文档有些出入,后期会专门写一篇关于这些命令的文章,同时由于 ZSCAN 命令是继承于 SCAN 命令的,此处也不再描述,后期会专门有一篇来说明 SCAN 命令的用法的。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值