Sorted-Set和Set类似
两者区别:
Sorted-Set中每一个成员都会有一个分数与之相连
Redis中可以根据分数排序
分数是可以重复的
value是不能够重复的
因为分数score是有序的所以说Sorted-Set中的成员在集合中的位置是有序的
使用场景(游戏的排名,微博的热点话题)
常用命令:
1:添加元素
zadd yuwen 100 xiaohong
zadd yuwen 100 xiaoli
zadd yuwen 80 xiaoming
zadd yuwen 100 xiaoming 小明已经得了80分,无法再添加语文分数为100的小明(其实是小明修改了分数,将80改成了100,一会在查询的时候可以看一下)
zadd key的值 value的分数 value的值
其中 value的值是不能重复的,但是value的分数能够重复。就拿上面的yuwen这门课3个人的分数就可以看出来..
还能够批量添加:zadd yuwen 89 lili 99 xiaobing 100 yy
2:获得元素
根据value获得分数:zscore yuwen xiaoming(之前我们把80改成了100,现在来看一下)
(果然修改成功)
获取成员数量:zcard mysort
其实我偷偷的添加了一个。。为了删除测试用,所以说才显示的是7个不是6个..
3:删除元素
zrem mysort test
4:范围查询
带着分数范围查询(由小到大)
由大到小。。(自己敲一遍吧。。)
5:拓展命令
按照排名范围删除
zremrangebyrank yuwen 0 99(这个是删除第0-99个元素。。我把set中的所有东西全删了。。。。)
按照分数 删除
zremrangebyscore math 80 90
删除了两个
所以说是>=80 <=90
为了测试我们再把之前删除的添加进来
zrangebyscore math 0 100 withscores
zrangebyscore math 0 100 withscores limit 0 2(这里和mysql分页一样,从第0调数据开始查,查询两条)
zincrby math 10 lisi 给lisi的分数+10(返回是添加之后的分数)
获取分数在某个区间的成员个数:zcount math 80 90
使用场景