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支持的数据类型就介绍到这里了。