美文网首页
list类型操作2

list类型操作2

作者: 闲云野鹤_23dd | 来源:发表于2020-12-11 20:03 被阅读0次

    LPUSHX

    语法

    LPUSHX key value
    
    

    将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。
    和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。

    返回值:
    LPUSHX 命令执行之后,表的长度。

    例子

    # 对空列表执行 LPUSHX
    
    redis> LLEN greet                       # greet 是一个空列表
    (integer) 0
    
    redis> LPUSHX greet "hello"             # 尝试 LPUSHX,失败,因为列表为空
    (integer) 0
    
    # 对非空列表执行 LPUSHX
    
    redis> LPUSH greet "hello"              # 先用 LPUSH 创建一个有一个元素的列表
    (integer) 1
    
    redis> LPUSHX greet "good morning"      # 这次 LPUSHX 执行成功
    (integer) 2
    
    redis> LRANGE greet 0 -1
    1) "good morning"
    2) "hello"
    
    

    RPUSHX

    语法

    RPUSHX key value
    
    

    将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
    和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。

    返回值:"
    RPUSHX 命令执行之后,表的长度。

    例子

    # key不存在
    
    redis> LLEN greet
    (integer) 0
    
    redis> RPUSHX greet "hello"     # 对不存在的 key 进行 RPUSHX,PUSH 失败。
    (integer) 0
    
    # key 存在且是一个非空列表
    
    redis> RPUSH greet "hi"         # 先用 RPUSH 插入一个元素
    (integer) 1
    
    redis> RPUSHX greet "hello"     # greet 现在是一个列表类型,RPUSHX 操作成功。
    (integer) 2
    
    redis> LRANGE greet 0 -1
    1) "hi"
    2) "hello"
    
    

    LLEN

    语法

    LLEN key
    
    

    返回列表 key 的长度。

    如果 key 不存在,则 key 被解释为一个空列表,返回 0 .
    如果 key 不是列表类型,返回一个错误。

    例子

    # 空列表
    
    redis> LLEN job
    (integer) 0
    
    # 非空列表
    
    redis> LPUSH job "cook food"
    (integer) 1
    
    redis> LPUSH job "have lunch"
    (integer) 2
    
    redis> LLEN job
    (integer) 2
    
    

    LREM

    语法

    LREM key count value
    
    

    根据参数 count 的值,移除列表中与参数 value 相等的元素。

    count 的值可以是以下几种:

    • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。

    • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。

    • count = 0 : 移除表中所有与 value 相等的值。

    返回值
    被移除元素的数量。 因为不存在的 key 被视作空表(empty list),所以当 key 不存在时, LREM 命令总是返回 0 。

    例子

    # 先创建一个表,内容排列是
    # morning hello morning helllo morning
    
    redis> LPUSH greet "morning"
    (integer) 1
    redis> LPUSH greet "hello"
    (integer) 2
    redis> LPUSH greet "morning"
    (integer) 3
    redis> LPUSH greet "hello"
    (integer) 4
    redis> LPUSH greet "morning"
    (integer) 5
    
    redis> LRANGE greet 0 4         # 查看所有元素
    1) "morning"
    2) "hello"
    3) "morning"
    4) "hello"
    5) "morning"
    
    redis> LREM greet 2 morning     # 移除从表头到表尾,最先发现的两个 morning
    (integer) 2                     # 两个元素被移除
    
    redis> LLEN greet               # 还剩 3 个元素
    (integer) 3
    
    redis> LRANGE greet 0 2
    1) "hello"
    2) "hello"
    3) "morning"
    
    redis> LREM greet -1 morning    # 移除从表尾到表头,第一个 morning
    (integer) 1
    
    redis> LLEN greet               # 剩下两个元素
    (integer) 2
    
    redis> LRANGE greet 0 1
    1) "hello"
    2) "hello"
    
    redis> LREM greet 0 hello      # 移除表中所有 hello
    (integer) 2                    # 两个 hello 被移除
    
    redis> LLEN greet
    (integer) 0
    

    相关文章

      网友评论

          本文标题:list类型操作2

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