
Redis数据类型之List类型及操作 1.List类型及操作 简介
插入后链表中元素的 数量LPUSHX key value O(1)
插入后链表中元素的数量LRANGE key start stopO(S+N)
返回指定范围内元素的列表LPOP keyO(1)
链表头部的元素LLEN keyO(1)
链表中元素的数量LREM key count valueO(N)
链表中元素的数量LSET key index valueO(N)
List语法及类型表二 命令原型 时间复杂度命令描述 返回值 LINDEX key indexO(N) 时间复杂度中N表示在找到该元素时需要遍历的元素 数量。对于头部或尾部元素,其时间复杂度为O(1)。 该命令将返回链表中指定位置(index)的元素,index 是0-based,表示头部元素,如果index为-1,表示尾部元素。 如果与该Key关联的不是链表,该命令将返回相关的错误信息 返回请 求的元 素 如果index超出范围,则返回 nil LTRIM key start stop O(N) 在指定Key所关联的List Value的尾部插入参数中给出的所有Values。 如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据 从链表的尾部插入。 如果该键的Value不是链表类 型,该命令将返回相关的错误信息 LINSERT key BEFORE|AFTER pivot value O(N) 仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生 成功插入后链表中元素的数量 如果没有找到 pivot, 返回-1, 如果 key不存在, 返回 0。 RPUSH key value [value ...]O(N) 在指定Key所关联的List Value的尾部插入参数中给出的所有Values。 如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的尾部插入。 如果该键的Value不是链表类 型,该命令将返回相关的错误信息 插入后链表中元素的数量RPUSHX key value O(N) 仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生 插入后链表中元素的数量RPOP key O(1) 返回并弹出指定Key关联的链表中的最后一个元素, 即尾部元素 如果该Key不存,返回nil 链表尾部的元素RPOPLPUSH source destination O(1) 原子性的从与source键关联的链表尾部弹出一个元 素,同时再将弹出的元素插入 到与destination键关联的链表的头部。 如果source键不存在,该命令将返 回nil,同时不再做任何其它的操作了。 如果source和 destination是同一个键,则相当于原子性的将其关联 链表中的尾部元素移到该链表的头部 返回弹出和插入的元素
/>redis-cli
redis 127.0.0.1:6379>del mykey
(integer) 1redis 127.0.0.1:6379>lpush mykey a b c d
(integer) 4redis 127.0.0.1:6379> lrange mykey 0 2
1) "d"
2) "c"
3) "b"redis 127.0.0.1:6379> lrange mykey 0 -1
1) "d"
2) "c"
3) "b"
4) "a"redis 127.0.0.1:6379> lpushx mykey2 e
(integer) 0redis 127.0.0.1:6379>lrange mykey2 0 -1
(empty list or set)redis 127.0.0.1:6379> lpushx mykey e
(integer) 5redis 127.0.0.1:6379> lrange mykey 0 0
1) "e"redis 127.0.0.1:6379>lpush mykey a b c d
(integer) 4
redis 127.0.0.1:6379>lpop mykey
"d"
redis 127.0.0.1:6379>lpop mykey
"c"redis 127.0.0.1:6379>llen mykey
(integer) 2redis 127.0.0.1:6379>lpush mykey a b c d a c
(integer) 6redis 127.0.0.1:6379> lrem mykey 2 a
(integer) 2redis 127.0.0.1:6379> lrange mykey 0 -1
1) "c"
2) "d"
3) "c"
4) "bredis 127.0.0.1:6379> lindex mykey 1
"d"redis 127.0.0.1:6379> lset mykey 1 e
OKredis 127.0.0.1:6379> lindex mykey 1
"e"redis 127.0.0.1:6379> lindex mykey 6
(nil)redis 127.0.0.1:6379>lset mykey 6 hh
(error) ERR index out of rangeredis 127.0.0.1:6379> ltrim mykey 0 2
OKredis 127.0.0.1:6379> lrange mykey 0 -1
1) "c"
2) "e"
3) "c"redis 127.0.0.1:6379> del mykey
(integer) 1redis 127.0.0.1:6379>lpush mykey a b c d e
(integer) 5redis 127.0.0.1:6379> linsert mykey before a a1
(integer) 6redis 127.0.0.1:6379>lindex mykey 0
"e"redis 127.0.0.1:6379> linsert mykey after e e2
(integer) 7redis 127.0.0.1:6379> lindex mykey 1
"e2"redis 127.0.0.1:6379>linsert mykey after k a
(integer) -1redis 127.0.0.1:6379> linsert mykey1 after a a2
(integer) 0redis 127.0.0.1:6379> del mykey
(integer) 1redis 127.0.0.1:6379>rpush mykey a b c d
(integer) 4redis 127.0.0.1:6379> lrange mykey 0 -1
1) "a"...