美文网首页
set类型操作2

set类型操作2

作者: 闲云野鹤_23dd | 来源:发表于2020-12-14 19:17 被阅读0次

    SPOP

    语法

    SPOP key
    
    

    移除并返回集合中的一个随机元素。

    如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER key [count] 命令。

    返回值:
    被移除的随机元素。 当 key 不存在或 key 是空集时,返回 nil 。

    例子

    redis> SMEMBERS db
    1) "MySQL"
    2) "MongoDB"
    3) "Redis"
    
    redis> SPOP db
    "Redis"
    
    redis> SMEMBERS db
    1) "MySQL"
    2) "MongoDB"
    
    redis> SPOP db
    "MySQL"
    
    redis> SMEMBERS db
    1) "MongoDB"
    
    

    SRANDMEMBER

    语法

    SRANDMEMBER key [count]
    
    

    如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。

    如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。

    如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。

    该操作和 SPOP key 相似,但 SPOP key 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。

    返回值:
    只提供 key 参数时,返回一个元素;如果集合为空,返回 nil 。 如果提供了 count 参数,那么返回一个数组;如果集合为空,返回空数组。

    例子

    # 添加元素
    
    redis> SADD fruit apple banana cherry
    (integer) 3
    
    # 只给定 key 参数,返回一个随机元素
    
    redis> SRANDMEMBER fruit
    "cherry"
    
    redis> SRANDMEMBER fruit
    "apple"
    
    # 给定 3 为 count 参数,返回 3 个随机元素
    # 每个随机元素都不相同
    
    redis> SRANDMEMBER fruit 3
    1) "apple"
    2) "banana"
    3) "cherry"
    
    # 给定 -3 为 count 参数,返回 3 个随机元素
    # 元素可能会重复出现多次
    
    redis> SRANDMEMBER fruit -3
    1) "banana"
    2) "cherry"
    3) "apple"
    
    redis> SRANDMEMBER fruit -3
    1) "apple"
    2) "apple"
    3) "cherry"
    
    # 如果 count 是整数,且大于等于集合基数,那么返回整个集合
    
    redis> SRANDMEMBER fruit 10
    1) "apple"
    2) "banana"
    3) "cherry"
    
    # 如果 count 是负数,且 count 的绝对值大于集合的基数
    # 那么返回的数组的长度为 count 的绝对值
    
    redis> SRANDMEMBER fruit -10
    1) "banana"
    2) "apple"
    3) "banana"
    4) "cherry"
    5) "apple"
    6) "apple"
    7) "cherry"
    8) "apple"
    9) "apple"
    10) "banana"
    
    # SRANDMEMBER 并不会修改集合内容
    
    redis> SMEMBERS fruit
    1) "apple"
    2) "cherry"
    3) "banana"
    
    # 集合为空时返回 nil 或者空数组
    
    redis> SRANDMEMBER not-exists
    (nil)
    
    redis> SRANDMEMBER not-eixsts 10
    (empty list or set)
    
    

    SREM

    语法

    SREM key member [member …]
    
    

    移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。

    当 key 不是集合类型,返回一个错误。

    返回值:
    被成功移除的元素的数量,不包括被忽略的元素。

    例子

    # 测试数据
    
    redis> SMEMBERS languages
    1) "c"
    2) "lisp"
    3) "python"
    4) "ruby"
    
    # 移除单个元素
    
    redis> SREM languages ruby
    (integer) 1
    
    # 移除不存在元素
    
    redis> SREM languages non-exists-language
    (integer) 0
    
    # 移除多个元素
    
    redis> SREM languages lisp python c
    (integer) 3
    
    redis> SMEMBERS languages
    (empty list or set)
    

    相关文章

      网友评论

          本文标题:set类型操作2

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