学习Redis基础(六)

56 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、Set类型

Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

1、Set类型的常见命令

  • SADDkey member ... :向set中添加一个或多个元素

  • SREM key member ... : 移除set中的指定元素

  • SCARD key: 返回set中元素的个数

  • SISMEMBER key member:判断一个元素是否存在于set中

  • SMEMBERS:获取set中的所有元素

  • SINTER key1 key2 ... :求key1与key2的交集

  • SDIFF key1 key2 ... :求key1与key2的差集

  • SUNION key1 key2 ..:求key1和key2的并集

2、练习

将下列数据用Redis的Set集合来存储:

  • 张三的好友有:李四、王五、赵六
  • 李四的好友有:王五、麻子、二狗

利用Set的命令实现下列功能:

  • 计算张三的好友有几人

  • 计算张三和李四有哪些共同好友

  • 查询哪些人是张三的好友却不是李四的好友

  • 查询张三和李四的好友总共有哪些人

  • 判断李四是否是张三的好友

  • 判断张三是否是李四的好友

  • 将李四从张三的好友列表中移除

七、SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

1、SortedSet类型的常见命令

  • ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值

  • ZREM key member:删除sorted set中的一个指定元素

  • ZSCORE key member : 获取sorted set中的指定元素的score值

  • ZRANK key member:获取sorted set 中的指定元素的排名

  • ZCARDkey:获取sorted set中的元素个数

  • ZCOUNT key min max:统计score值在给定范围内的所有元素的个数

  • ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值

  • ZRANGE key min max:按照score排序后,获取指定排名范围内的元素

  • ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素

  • ZDIFF、ZINTER、ZUNION:求差集、交集、并集

注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可

2、练习

将班级的下列学生得分存入Redis的SortedSet中:

Jack 85, Lucy 89, Rose 82, Tom 95, Jerry 78, Amy 92, Miles 76

并实现下列功能:

  • 删除Tom同学

  • 获取Rose同学的分数

  • 获取Rose同学的排名

  • 查询80分以下有几个学生

  • 给Amy同学加2分

  • 查出成绩前3名的同学

  • 查出成绩80分以下的所有同学