Redis基本命令使用::set篇

Redis有6大基本类型,分别是字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)

redis在线体验地址:http://try.redis.io/

集合(Set)

介绍:

Redis的集合就是一个简单的字符串集合,该集合是无序的,且集合内的元素都是唯一的,也就是集合内不会出现重复元素。Redis中的集合是通过哈希表来实现的,所以获取集合中元素的时间复杂度为O(1)。

创建缓存

  1. 创建一个集合缓存,为集合新增元素

    • 命令格式:sadd key member [member ...]

    • 🌰

      1
      2
      3
      4
      sadd s1 1 2 3 0 -1 redis mongodb zookeeper

      ---
      创建集合s1,元素为:1 2 3 0 -1 redis mongodb zookeeper

移除元素

  1. 随机移除集合中的一个元素并返回这个元素

    • 命令格式:spop key

    • 🌰

      1
      2
      3
      4
      spop s1

      ---
      移除之后,集合s1中就没有这个元素了
  2. 指定移除集合中一个或多个元素

    • 命令格式:srem key member [member ...]

    • 🌰

      1
      2
      3
      4
      srem s1 -1 0 99

      ---
      将元素-1、0、99从集合s1中移除,仅移除集合中存在的元素

查询集合

  1. 查询集合中元素个数

    • 命令格式:scard key

    • 🌰

      1
      2
      3
      4
      scard s1

      ---
      返回集合s1中元素总个数
  2. 返回集合中所有元素

    • 命令格式:smembers key

    • 🌰

      1
      2
      3
      4
      smembers s1

      ---
      返回集合s1中所有的元素
  3. 随机返回集合中的一个或多个元素

    • 命令格式:srandmember key [count]

    • 🌰

      1
      2
      3
      4
      srandmember s1 10

      ---
      随机返回集合s1中的10个元素,若不指定数量,则默认返回一个元素
  4. 迭代集合中的元素

    • 命令格式:sscan key cursor [MATCH pattern] [COUNT count]

    • 🌰

      1
      2
      3
      4
      sscan s1 0 match re* count 1

      ---
      迭代集合中re开头的所有元素,每次返回1个
  5. 判断元素是否存在于集合中

    • 命令格式:sismember key member

    • 🌰

      1
      2
      3
      4
      sismember s1 99

      ---
      若99存在于s1中,则返回1,不存在则返回0

多集合之间操作

  1. 查看多个集合的差集

    • 命令格式:sdiff key [key ...]

    • 🌰

      1
      2
      3
      4
      sdiff s1 s2 s3

      ---
      返回集合s1相对于s2、s3的差集,也就是只返回s1中所有不存在于s2、s3中的所有元素
  2. 多个集合的差集存储到指定集合中

    • 命令格式:sdiffstore destination key [key ...]

    • 🌰

      1
      2
      3
      4
      sdiffstore ds1 s1 s2 s3

      ---
      将s1中不存在于s2、s3中的元素存储到集合ds1中
  3. 查看多个集合的并集,去重

    • 命令格式:sunion key [key ...]

    • 🌰

      1
      2
      3
      4
      sunion s1 s2 s3

      ---
      将集合s1、s2、s3的元素合并去重后返回,所有元素均唯一
  4. 多个集合的并集存储到指定集合中

    • 命令格式:sunionstore destination key [key ...]

    • 🌰

      1
      2
      3
      4
      sunionstore us1 s1 s2 s3

      ---
      集合s1、s2、s3的并集存储到集合us1中,并返回集合us1中的元素个数
  5. 将一个集合中的某元素移动到另一个集合中

    • 命令格式:smove source destination member

    • 🌰

      1
      2
      3
      4
      smove s1 s2 -2

      ---
      将s1中的元素-2移动到集合s2中,若s2不存在,则自动创建
  6. 查看多个集合的交集

    • 命令格式:sinter key [key ...](intersection)

    • 🌰

      1
      2
      3
      4
      5
      6
      sinter s1 s3

      ---
      返回集合s1和集合s3的交集,也就是两个集合中都存在的数据

      实际应用:查看两个人的共同好友;微信里查看和好友的共同群
  7. 多个集合的交集存储到指定集合中

    • 命令格式:sinterstore destination key [key ...]

    • 🌰

      1
      2
      3
      4
      sinterstore is1 s1 s3

      ---
      将s1和s3的交集元素存储到集合is1中