【set:集合類型(高中的集合知識)】
集合類型:無序、不可重復
列表類型:有序、可重復
【set類型】
1.添加元素
語法:sadd key member1 member2......
返回值:返回成功添加的元素個數
2.獲取集合中的所有元素
語法:smembers key
3.刪除集合中某個元素
4.判斷元素是否在集合中
語法:sismember key member
返回值:存在,返回1;不存在,返回0。
【set集合之間的運算】
1.差集A-B
描述:屬於集合A,但不屬於集合B
語法:sdiff key1 key2...
2.集合的交集A∩B
描述:屬於集合A 且屬於集合B的元素構成的集合
3.集合的並集A∪B
描述:屬於A或屬於B的元素構成的集合。
【集合的其他命令】
1.獲取集合中的元素個數
語法:scard key
2.從集合中彈出一個元素
由於集合是無序的,所有SPOP命令會從集合中隨機彈出一個元素。
【SortedSet類型:zset集合】
sortedSet有叫做zset。
zset是有序集合,可排序的,但是要唯一。
zset和set的不同之處在於,zset是會給set的元素添加一個分數,然后通過這個分數進行排序。
【zset類型】
1.添加元素
描述:向有序集合zset中添加一個元素和該元素的分數,如果該集合已經存在則會使用新的分數替換原有的分數。
返回值:新加入到集合中的元素的個數,不包含之前已經存在的元素。
語法:zadd key score1 member1 score2 member2 score3 member3......
2.獲取元素的分數
語法:zscore key member
3.刪除元素
描述:刪除有序集合中的一個或多個成員,不存在的成員被忽略。
語法:zrem key member1 member2......
4.獲得排名在某個范圍內的元素列表
描述:按照元素分數從小到大的順序返回索引從start到stop之間的所有元素(包含兩端的元素)
語法:zrange key start stop
描述:按照元素分數從大到小的順序返回索引從start到stop之間的所有元素(包含兩端的元素)
語法:zrevrange key start stop
描述:如果需要獲得元素的分數,可以在尾部加上withscores參數
語法:zrange key start stop[withscores]
zrevrange key start stop [withscores]
5.獲取元素的排名
描述:從小到達獲取某個元素的排名
語法:zrank key member
描述:從大到小獲取某個元素的排名
語法:zrevrank key member
6.獲取指定分數范圍內的元素
語法:zrangebyscore key min max [withscores] [limit offset count]
7.增加某個元素的分數
語法:zincrby key increment member
注意:不可以將increment和member的順序調換,與之前的不一樣
8.獲取集合中元素的數量
語法:zcard key
9.獲取指定分數范圍內的元素個數
語法:zcount key min max
10.按照分數排名范圍刪除元素
語法:zremrangebyrank key start stop
11.按照分數范圍刪除元素
語法:zremrangebyscore key min max
【zset應用:商品銷售排行榜】
需求:根據商品銷售量對商品進行排名顯示。
思路:定義商品銷售排行榜(sorted set集合),key為items:sellsort,分數為商品的銷售量。
寫入商品銷售量:(編號1001商品,銷售量9;編號1002商品,銷售量10;編號1003商品,銷售量999)