美文网首页纵横研究院数据库技术专题社区
Redis实战-Redis五种数据类型(四-3 集合)

Redis实战-Redis五种数据类型(四-3 集合)

作者: 擦普洱 | 来源:发表于2019-05-05 21:52 被阅读15次

    3.集合
      Redis的集合以无序的方式来存储多个各不相同的元素,用户可以快速对集合执行添加元素的操作、移出元素操作以及检查一个元素是否存在于集合里。本节将对最常用的集合命令进行介绍,包括插入命令、移出命令、将元素从一个集合移动到另一个集合的命令,以及对多个集合执行交集运算的命令。

    一些常用的集合命令

    命令 用例和描述
    SADD SADD key-name item [item ...] --将一个或多个元素添加到集合里面,并返回被添加元素当中原本并不存在与集合里面的元素数量
    SREM SREM key-name item --从集合里面移出一个或多个元素,并返回被移出元素的数量
    SISMEMBER SISMEMBER key-name item --检查元素item是否存在于集合key-name 里
    SCARD SCARD key-name --返回集合包含的所有元素的数量
    SMEMBERS SMEMBERS key-name --返回集合包含的所有元素
    SRANDMEMBER SRANDMEMBER key-name [count] --从集合里面随机地返回一个或多个元素,当count为正数时,命令返回的随机元素不会重复;当count为负数时,命令返回的随机元素可能会出现重复
    SPOP SPOP key-name --随即地移除集合中的一个元素,并返回被移除的元素
    SMOVE SMOVE source-key dest-key item --如果集合source-key 包含元素item,那么从集合source-key里面移除元素item,并将元素item,添加到集合dest-key中,如果item被成功移除,那么明林赶回1,否则返回0

    下面来一波实操:

    # SADD命令会将那些目前并不存在于集合里面的元素添加到集合里面,并返回被添加元素的数量
    127.0.0.1:6379> sadd set-key a b c
    (integer) 3
    # srem函数在元素被成功移除时返回剩余的个数,移除失败时返回0即代表没有移除成功
    127.0.0.1:6379> srem set-key c d
    (integer) 1
    127.0.0.1:6379> srem set-key c d
    (integer) 0
    # 查看集合包含元素的数量
    127.0.0.1:6379> scard set-key
    (integer) 2
    # 获取集合包含的所有元素
    127.0.0.1:6379> smembers set-key
    1) "b"
    2) "a"
    # 将元素从一个集合移动到另一个集合,在执行smove操作的时候,如果用户想要移动的元素不存在于第一个集合里,那么移动操作就 不会执行。
    127.0.0.1:6379> smove set-key set-key2 a
    (integer) 1
    127.0.0.1:6379> smove set-key set-key2 c
    (integer) 0
    127.0.0.1:6379> smembers set-key2
    1) "a"
    127.0.0.1:6379>
    

    通过使用上面展示的命令,我们可以将各不相同的多个元素添加到集合里面,单集合真正厉害的地方在于组合和关联多个集合。

    用于组合和处理多个集合的Redis命令

    命令 用例和描述
    SDIFF SDIFF key-name [key-name ...] --返回那些存在于第一个集合,但不存在于其他集合中的元素(数学上的差集运算)
    SDIFFSTORE SDIFFSTORE dest-key key-name [key-name ...] --将那些存在于第一个集合但并不存在于其他集合中的元素存储到dest-key键里面
    SINTERSTORE SINTERSTORE dest-key key-name [key-name ...] --将那些同事存在于所有集合的元素(数学上的交集运算)存储到dest-key键里面
    SUNION SUNION key-name [key-name ...] --返回那些至少存在于一个集合中的元素(数学上的并及计算)
    SUNIONSTORE SUNIONSTORE dest-key key-name [key-name ...] --将那些至少存在于一个集合中的元素(数学上的并集计算)存储到dest-key键里面

    这些命令分别是并集运算、交集运算和差集运算这3个操作的返回结果版本和存储结果版本,一下给出实例:

    # 给skey1和skey2集合中添加元素
    127.0.0.1:6379> sadd skey1 a b c d
    (integer) 4
    127.0.0.1:6379> sadd skey2 c d e f
    (integer) 4
    # 计算出第一个集合里面移出第二个集合包含的所有的元素
    127.0.0.1:6379> sdiff skey1 skey2
    1) "a"
    2) "b"
    # 计算出同时存在于两个集合里面的所有元素
    127.0.0.1:6379> sinter skey1 skey2
    1) "c"
    2) "d"
    #计算出两个集合包含的所有各不相同的元素
    127.0.0.1:6379> sunion skey1 skey2
    1) "a"
    2) "e"
    3) "f"
    4) "c"
    5) "b"
    6) "d"
    127.0.0.1:6379>
    

    以上就是Redis集合的差集、交集、并集运算的示例。

    不怕从零开始,只怕从未启程!

    参考文献:
    菜鸟教程:https://www.runoob.com/redis/redis-keys.html
    《Redis实战》Josiah L. Carlson著

    相关文章

      网友评论

        本文标题:Redis实战-Redis五种数据类型(四-3 集合)

        本文链接:https://www.haomeiwen.com/subject/plyunqtx.html