重学redis系列之sorted_set

sorted_set,redis所支持的最后一种数据类型,不但有去重的特点,还具有“排序”的特性,不过这里的排序不是按照我们添加的顺序进行排序,而是在添加元素的时候我们需要指定一个维度”SCORE”,而sorted_set里面的排序便是依据这个SCORE作为排序依据的。依照惯例,先用help @sorted_set命令查看sorted_set相关的使用命令。
在这里插入图片描述
sorted_set相关的命令是一组以“Z”打头的命令(因为S已经被set占用了)。
添加元素:
ZADD key [NX|XX] [CH] [INCR] score member [score member …]
summary: Add one or more members to a sorted set, or update its score if it already exists
在这里插入图片描述
每一个元素前面需要有一个对应的分值作为参数。
查看元素:
ZRANGE key start stop [WITHSCORES]
summary: Return a range of members in a sorted set, by index
在这里插入图片描述
添加withscores则返回元素以及其对应的分值。
在这里插入图片描述
还有一点我们发现添加元素的顺序是cat、dog、pig,但是取出元素的顺序是cat、pig、dog,实际上redis已经按照我们给出的score对元素做了排序。
获取集合中元素个数:
ZCARD key
summary: Get the number of members in a sorted set
在这里插入图片描述
获取指定分值区间的元素个数(包含起始分值):
ZCOUNT key min max
summary: Count the members in a sorted set with scores within the given values
在这里插入图片描述
改变一个元素的分值:
ZINCRBY key increment member
summary: Increment the score of a member in a sorted set
在这里插入图片描述
我们看到pig的分值已经改变,同时元素的顺序也随之发生了改变。
删除一个或多个元素:
ZREM key member [member …]
summary: Remove one or more members from a sorted set
在这里插入图片描述
sorted_set提供了以“SCORE”为依据排序,很适合一些排名相关的场景。
获取某个元素在集合中排序:
ZRANK key member
summary: Determine the index of a member in a sorted set
在这里插入图片描述
返回的顺序其实是索引值(升序)。
获取指定个数排名最低的元素:
ZPOPMIN key [count]
summary: Remove and return members with the lowest scores in a sorted set
在这里插入图片描述
获取集合中指定个数分值最高的元素:
ZPOPMAX key [count]
summary: Remove and return members with the highest scores in a sorted set
在这里插入图片描述
类似的ZRANGE返回的元素是升序排序,还有一个对应命令ZREVRANGE返回的则是降序排序的元素。
同时,sorted_set里面也有求并、交、差集的操作,不同于set里面的操作,sorted_set同样的操作里面有一个对“SCORE”的处理,可以是求和、去最大、取最小等操作,还有两个以“B”打头的命令可以完成类似阻塞队列的效果,具体详情可以参考redis官方文档,redis支持的数据类型就介绍到这里了。


版权声明:本文为hxj413977035原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。