Redis教程

集合(set)

Preview
  • Redis数据结构之set
  • 特点
  • 命令
  • 添加元素
  • 返回元素
  • 集合运算
  • 总结

Redis数据结构之set

Redis中的set是一种无序的、不重复的数据结构,用于存储字符串类型的元素。

特点

  • set中的元素不重复,且无序,即不能保证添加元素的顺序,也不能按照元素的添加顺序来获取元素。
  • set中的元素必须是字符串类型的。
  • set常常用来去重、交集、并集等操作。

命令

添加元素

  1. sadd key member1 [member2 ...]

    将一个或多个元素添加到set中。

    redis> sadd set1 apple
    (integer) 1
    redis> sadd set1 pear orange
    (integer) 2
    
  2. srem key member1 [member2 ...]

    移除set中一个或多个元素。

    redis> srem set1 pear
    (integer) 1
    
  3. smove source dest member

    将source中的元素member移动到dest中。

    redis> sadd set2 banana
    (integer) 1
    redis> smove set1 set2 apple
    (integer) 1
    redis> smembers set1
    (empty list or set)
    redis> smembers set2
    1) "apple"
    2) "banana"
    3) "orange"
    

返回元素

  1. scard key

    返回set中元素的个数。

    redis> scard set1
    (integer) 2
    
  2. sismember key member

    判断member元素是否在set中。

    redis> sismember set1 apple
    (integer) 1
    redis> sismember set1 pear
    (integer) 0
    
  3. smembers key

    返回set中所有元素。

    redis> smembers set1
    1) "apple"
    2) "orange"
    
  4. srandmember key [count]

    随机返回set中的一个或多个元素。

    redis> srandmember set1
    "orange"
    redis> srandmember set1 2
    1) "apple"
    2) "orange"
    

集合运算

  1. sdiff key1 [key2 ...]

    返回key1中有、其他set中没有的元素。

    redis> sadd set3 apple pear
    (integer) 2
    redis> sdiff set1 set3
    1) "orange"
    
  2. sdiffstore destination key1 [key2 ...]

    将sdiff操作的结果存储到destination中。

    redis> sdiffstore set4 set1 set3
    (integer) 1
    redis> smembers set4
    1) "orange"
    
  3. sinter key1 [key2 ...]

    返回key1中和其他set中都有的元素。

    redis> sadd set5 apple orange
    (integer) 2
    redis> sinter set1 set5
    1) "apple"
    2) "orange"
    
  4. sinterstore destination key1 [key2 ...]

    将sinter操作的结果存储到destination中。

    redis> sinterstore set6 set1 set5
    (integer) 2
    redis> smembers set6
    1) "apple"
    2) "orange"
    
  5. sunion key1 [key2 ...]

    返回所有set中的元素,去重后的结果。

    redis> sunion set1 set5
    1) "orange"
    2) "pear"
    3) "apple"
    
  6. sunionstore destination key1 [key2 ...]

    将sunion操作的结果存储到destination中。

    redis> sunionstore set7 set1 set5
    (integer) 3
    redis> smembers set7
    1) "orange"
    2) "pear"
    3) "apple"
    

总结

set是Redis中常用的数据结构之一,能够实现去重、交集、并集等操作,使用起来也比较简单。需要注意的是,set中的元素必须是字符串类型的,set中的元素是无序的,而且不能重复。