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
使用場景