sortedset数据结构
sortedset和set类型极为类似,它们都是字符串的集合,都不允许重复的成员出现在一个set集合中。它们之间的主要差别是sortedset中的每一个成员都会有一个分数(score)与之关联,redis正是通过分数来为集合指那个的成员进行从大到小的排序。然而需要额外指出的是尽管sortedset中的成员必须是唯一的,但是分数却是可以重复的。
在sortedset中添加、删除或更新一个成员都是非常快速的操作。其时间复杂度为集合中成员数量的对数。由于sortedset中的成员在集合中的位置是有序的。因此,即便是访问位于集合中部的成员也仍然是非常高效的。
应用场景:
游戏排名、微博热点话题等使用场景
常用命令
添加元素
zadd key score1 member1 score2 member2 ..
.
将所有成员以及该成员的分数存放到sortedset中。如果该元素已经存在,则会用心的分数替换原有的分数,返回值时新加入到集合中的元素个数,不包含之前已经存在的元素。
![](https://img-blog.csdn.net/20170529231200984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
获取元素
zscore key member
获取指定成员的分数
![](https://img-blog.csdn.net/20170529231208861?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zcard key
获取集合中的成员数量
![](https://img-blog.csdn.net/20170529231211609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
删除元素
zrem key member1 member2 ..
.
移除集合中指定的成员,可以指定多个成员
范围查询
zrange key start end [withscores]
获取集合中下标为stert到end的成员,[withscore]参数表名返回的成员包含其分数。
![](https://img-blog.csdn.net/20170529231245174?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zrevrange key start stop [withscores]
按照元素分数从大到小的顺序返回下标从start到stop之间的所有元素,包含两端的元素,[withscore]参数表名返回的成员包含其分数。
![](https://img-blog.csdn.net/20170529231248563?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zremrangebyrank key start stop
按照排名范围删除元素
![](https://img-blog.csdn.net/20170529231252206?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zremrangebyscore key start stop
按照分数范围删除元素
![](https://img-blog.csdn.net/20170529231323737?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zrangebyscore key min max [withscores] [limit offset count]
返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]表示显示分数,[limit offset count]中的ofsfet表示从下标offset的元素开始并返回count个成员。
![](https://img-blog.csdn.net/20170529231333891?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zincrby key increment member
设置指定成员的增加的分数,返回值是更改后的分数
![](https://img-blog.csdn.net/20170529231337128?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zcount key min max
获取分数在[min,max]之间的成员
![](https://img-blog.csdn.net/20170529231339892?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
zrank key member
从小到大返回成员在集合中的排名
zrevrank key member
从大到小返回成员在集合中的排名
![](https://img-blog.csdn.net/20170529231405004?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
使用场景
keys通用操作
keys pattern
获取所有域pattern匹配的key,*表示任意一个或多个字段,?表示一个字符、
keys *
keys my*
keys ??list
keys my???
![](https://img-blog.csdn.net/20170529231434830?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
del key1 key2 ...
删除指定的key
![](https://img-blog.csdn.net/20170529231439520?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
exists key
判断该key是否存在,1代表存在,0代表不存在
![](https://img-blog.csdn.net/20170529231501174?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
rename key newkey
为当前的key重命名
![](https://img-blog.csdn.net/20170529231505517?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
expire key
设置过期时间,单位是秒
ttl key
获取该key剩的超时时间,如果没有设置超时,返回-1,如果返回-2表示超时不存在
![](https://img-blog.csdn.net/20170529231509017?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
type key
获取指定key的类型,该命令将以字符串的格式返回,返回的字符串是string、lsit、set、hash、zset。如果key不存在返回none。
![](https://img-blog.csdn.net/20170529231514052?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)