04_Redis数据类型(set、zset)
【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)