redis系列(07):Sorted-Sets类型操作
本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/10950727.html
Sorted-Sets也称为Zset,每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序(默认)。
尽管SortedSets中的成员必须是唯一的,但是分数(score)却是可以重复的。
由于Sorted-Sets中的成员在集合中的位置是有序的,因此,即便是访问位于集合中部的成员也仍然是非常高效的。
应用场景:排序场景,比如排行榜;构建索引数据
zadd、zrange、zcard、zrank、zcount、zrem、zscore、zincrby
zadd
添加一个分数为10的成员
添加两个分数分别是20和30的两个成员
zrange
通过索引获取元素,0表示第一个成员,1表示最后一个成员。WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员
zcard
获取test键中成员的数量
zrank
获取成员在集合中的索引,索引从0开始
成员ddd并不存在,因此返回nil
zcount
获取符合指定条件的成员数量,分数满足表达式10 <= score <= 20的成员的数量
zrem
删除成员aaa和bbb,返回实际删除成员的数量
zscore
获取成员ccc的分数。返回值是字符串形式
由于成员aaa已经被删除,所以该命令返回nil
zincrby
将成员ccc的分数增加10,并返回该成员更新后的分数
将成员ccc的分数增加-5,并返回该成员更新后的分数
zrangebyscore、zremrangebyscore、zremrangebyrank
zrangebyscore
通过分数获取元素,获取分数满足表达式10 <= score <= 20的成员
zremrangebyscore
根据分数删除成员,删除分数满足表达式10 <= score <= 20的成员,并返回实际删除的数量
zremrangebyrank
根据索引删除成员,删除索引满足表达式0 <= rank <= 1的成员
zrevrange、zrevrangebyscore、zrevrank
zrevrange
按索引从高到低的方式获取成员(获取top10:zrevrange test 0 9)
由于是从高到低的排序,所以位置等于0的是ddd,1是ccc,并以此类推
zrevrangebyscore
按索引从高到低的方式根据分数获取成员,分数满足表达式30 >= score >= 10的成员
limit选项的含义等同于zrangebyscore中的该选项,只是在计算位置时按照相反的顺序计算和获取
zrevrank
获取成员aaa在集合中的索引,由于是从高到低的排序,所以aaa的位置是3
由于是从高到低的排序,所以ddd的位置是0
__EOF__
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!