• 6、数据类型四:sets


    集合的基本特征:无序,唯一。

    一个redis集合最多能存放232-1个集合元素。其强大之处在于它支持集合的“交、差、并”运算,而且能够快速的判断某个给定值是否在集合中。

    1、基本命令:

    SADD key member [member ...]
    SREM key member [member ...]
    
    SMEMBERS key
    SISMEMBER key member
    
    SCARD key
    
    SPOP key [count]
    SRANDMEMBER key [count]
    SMOVE source destination member
    
    //交
    SINTER key [key ...]
    SINTERSTORE destination key [key ...]
    
    //差
    SDIFF key [key ...]
    SDIFFSTORE destination key [key ...]
    
    //并
    SUNION key [key ...]
    SUNIONSTORE destination key [key ...]

    2、命令解析:

    ①、SADD key member [member ...] / SREM key member [member ...]

    功能:SADD向集合中新增一个或多个元素;SREM从结合总删除一个或多个元素;

    时间复杂度:O(N),N是要操作的member的个数

    example

    ②、SMEMBERS key / SISMEMBER key member

    功能:SMEMBERS列出集合中的所有元素。SISMEMEBER判断member是不是属于集合。

    时间复杂度:SMEMBERS为O(N),N为集合中元素总数。SISMEMBER的时间复杂度为O(1)。

    example

    ③、SCARD key

    功能:返回集合中元素的个数

    时间复杂度:O(1)

    example

    ④、SPOP key [count]  / SRANDMEMBER key [count]

    功能:SPOP从集合中随机的捞出count个元素返回,并且删除返回的元素。SRANDMEMBER也是随机返回count个元素,但是不会删除集合中返回的元素。注意:count可以取正数或负数,其绝对值表示要随机返回元素的个数,如果count > 0则返回元素不能有相同的,如果count < 0则返回元素允许有相同的。

    时间复杂度:O(N),N表示要返回随机元素的葛素。

    example

    ⑤、SMOVE source destination member

    功能:将“源”集合中的某个元素移动到“目的”集合中。

    时间复杂度:O(1)

    example

    ⑥、SINTER key [key ...] / SINTERSTORE destination key [key ...]

    功能:“交集”运算:key1 ∩ key2 ∩ key3 ∩ ...。区别在于SINTER直接将结果返回,SINTERSTORE不会将结果返回,而是存放在destination集合中。

    时间复杂度:O(N*M),N是列表中最小集合中元素的个数,M是列表中集合的个数。

    example

    ⑦、SDIFF key [key ...] / SDIFFSTORE destination key [key ...]

    功能:“差集”运算:key1 - key2 - key3 - ...

    时间复杂度:O(N),N表示所有列表中集合元素的总个数

    example:

    ⑧、SUNION key [key ...] / SUNIONSTORE destination key [key ...]

    功能:“并集”运算:key1 ∪ key2 ∪ key3 ∪ ...

    时间复杂度:O(N),N表示所有列表中集合元素的总个数

    example

  • 相关阅读:
    和为S的连续正数序列
    数组中的逆序对
    剑指offer:数组中出现次数超过一半的数字
    剑指offer12:矩阵中的路径
    剑指offer(62):孩子们的游戏(圆圈中最后剩下的数)约瑟夫环问题
    剑指offer41:数据流中的中位数
    剑指offer56:数组中只出现一次的数字
    不用加减乘除做加法
    输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可
    求树的高度
  • 原文地址:https://www.cnblogs.com/lj95801/p/5638628.html
Copyright © 2020-2023  润新知