上一篇:Redis 系列02--Redis 数据类型--Set_fengxianaa的博客-CSDN博客
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。
- zadd:将一个或多个成员元素及其分数值加入到有序集当中,如果有序集合的 key 不存在,则创建一个空的有序集并执行 ZADD 操作
- 下图,将 test1 test2 test3 添加到有序集合 fengxiansheng 中,分值分别是:1,2,3
- 如果添加的元素已经存在,那么更新它的分数,分数可以是小数
- 下图,将 test1 test2 test3 添加到有序集合 fengxiansheng 中,分值分别是:1,2,3
- zrange:返回有序集合中,指定区间内的成员,0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
- 也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
按分数从小到大来排序 - 如果不加 withscores 参数,不会返回分数
- 如果分数相同,按字典序来排列
- 也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
- zrevrange:跟 zrange 类似,区别是:按分数从大到小来排列
- zcard:返回算集合中元素的数量。
- 如果集合并不存在,返回0
- zcount:返回有序集合中,指定分数区间的成员数量。
- zincrby:对有序集合中指定成员的分数加上增量 increment,返回最终
- 下图,对 test1 元素增加 1 分
- 也可以通过传递一个负数 ,让分数减去相应的值,下图,对 test1 元素,减去 1 分
- 当 集合不存在,或者目标不是集合中的成员,zincrby 命令相当于 zadd命令
- 下图,对 test1 元素增加 1 分
- zrangebyscore:返回有序集合中,指定分数区间的成员,按分数从小到大 排列。
- 也可以使用开闭区间,比如:返回 2< N <=5 的元素
- 下图,因为 test2 元素是 2分,所以结果中没有它
- 下图中,返回 2<= N <4 的元素
- 获取所有元素
- 获取所有元素,带分数
- zrevrangebyscore:跟zrangebyscore类似,不过是按分数从大到小排列
- zrank:返回有序集中,指定成员的排名,排名从0开始,分数最小的是第一名
- zrevrank:跟 zrank 类似,不过,分数最大的是第一名
- zrem:删除集合中一个或多个成员,返回删除的元素个数
- zremrangebyscore:删除集合中,指定分数区间内的所有成员。
- 下图,删除 2< N <=3 的元素
- 下图,删除 分数=1 的元素
- 下图,删除 2< N <=3 的元素
- zremrangebyrank:删除有序集中,指定索引区间的所有成员
- 删除集合中所有元素
- zscore:返回指定元素的分数值
- 如果元素不存在,返回 nil