Redis是有序集合且不允许重复的成员,每个成员都会关联一个double类型的分数。redis通过分数来为集合中的成员进行排序 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为4294967295,也就是说每个集合可存储40多亿个成员。
有这样一个场景,需要统计所有学生的分数排名,我们就可以用redis的sorted set
来实现,看一下都有哪些命令。
ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员,或者更新已存在成员的分数,key是有序集合的键名,score1 member1 是成员的分数和名字,如果同时添加多个,后面继续跟 score2 member2 即可
ZCARD key
获取有序集合的成员数
ZCOUNT key min max
计算在有序集合中指定区间分数的成员数,比如要查找及格的成员数,那么就可以用这个命令,设置min是60分,max是100分,即可。
ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment,比如要统计学生各科成绩总分排名,就可以使用这个命令,因为ZADD是更新已存在的member,而ZINCRBY是在原来基础上增加,当然ZINCRBY不仅仅是增量更新,也有创建的作用。所以跟ZADD的区别就是增量更新。
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序(从小到大)集合指定区间内的成员,最后可以选择是否带分数返回
ZREVRANGE key start stop [WITHSCORES]
同ZRANGE,但是是从大到小排序
ZRANK key member
返回有序集合中指定成员的索引,注意是从0开始计的,按从小到大的顺序排名
ZREVRANK key member
同ZRANK,但是是从大到小排序
ZSCORE key member
返回有序集中,成员的分数值
viencoding.com版权所有,允许转载,但转载请注明出处和原文链接: https://viencoding.com/article/274