《Redis使用手册之列表》
目录
-
-
- **《Redis使用手册之列表》**
- **LPUSH:将元素推入列表左端**
- **LPUSHX、RPUSHX:只对已存在的列表执行推入操作**
- **LPOP:弹出列表最左端的元素**
- **RPOP:弹出列表最右端的元素**
- **RPOPLPUSH:将右端弹出的元素推入左端**
- **LLEN:获取列表的长度**
- **LINDEX:获取指定索引上的元素**
- **LRANGE:获取指定索引范围上的元素**
- **LSET:为指定索引设置新元素**
- **LINSERT:将元素插入列表**
- [**4.12 LTRIM:修剪列表**](#4.12 LTRIM:修剪列表)
- **LREM:从列表中移除指定元素**
- **BLPOP:阻塞式左端弹出操作**
- **BRPOP:阻塞式右端弹出操作**
- **BRPOPLPUSH:阻塞式弹出并推入操作**
-
LPUSH:将元素推入列表左端
-
127.0.0.1:6379> lpush list aa bb cc
(integer) 3
127.0.0.1:6379> rpush list dd ee ff
(integer) 6
lpush :将元素推入列表左端 lpush list aa bb cc 可一次推入多个元素
LPUSH:将元素推入列表左端
LPUSHX、RPUSHX:只对已存在的列表执行推入操作
-
127.0.0.1:6379> lpushx list1 aa
(integer) 0
127.0.0.1:6379> rpushx list1 aa
(integer) 0
LPUSHX命令只会在列表已经存在的情况下,将元素推入列表左端 RPUSHX命令只会在列表已经存在的情况下,将元素推入列表右端。
LPUSHX命令只会在列表已经存在的情况下,将元素推入列表左端。●RPUSHX命令只会在列表已经存在的情况下,将元素推入列表右端。
LPOP:弹出列表最左端的元素
-
127.0.0.1:6379> lpop list
"cc"
127.0.0.1:6379> lpop list
"bb"
127.0.0.1:6379> lpop list
"aa"
LPOP:弹出列表最左端的元素。 后进先出
LPOP:弹出列表最左端的元素
RPOP:弹出列表最右端的元素
-
127.0.0.1:6379> rpop list
"ff"
RPOP:弹出列表最右端的元素
RPOP:弹出列表最右端的元素
RPOPLPUSH:将右端弹出的元素推入左端
-
127.0.0.1:6379> rpush list1 a b c
(integer) 3
127.0.0.1:6379> rpush list2 d e f
(integer) 3
127.0.0.1:6379> rpoplpush list1 list2
"c"
127.0.0.1:6379> rpoplpush list1 list2
"b"
127.0.0.1:6379> rpoplpush list1 list2
"a"
127.0.0.1:6379> rpoplpush list1 list1
(nil)
127.0.0.1:6379> rpoplpush list2 list3
"f"
列表 list1中的元素已经全部被推至list2中。
RPOPLPUSH:将右端弹出的元素推入左端
RPOPLPUSH source target 源列表和目标列表相同 在这种情况下,RPOPLPUSH命令的效果相当于将列表最右端的元素变成列表最左端的元素。
处理空列表
如果用户传给RPOPLPUSH命令的源列表并不存在,那么RPOPLPUSH命令将放弃执行弹出和推入操作,只返回一个空值表示命令执行失败。
如果源列表非空,但是目标列表为空,RPOPLPUSH命令将正常执行弹出操作和推入操作
RPOPLPUSH:将右端弹出的元素推入左端
LLEN:获取列表的长度
-
127.0.0.1:6379> llen list1
(integer) 0
127.0.0.1:6379> llen list2
(integer) 5
LLEN:获取列表的长度
LLEN:获取列表的长度
LINDEX:获取指定索引上的元素
-
127.0.0.1:6379> lindex list2 0
"a"
127.0.0.1:6379> lindex list2 2
"c"
127.0.0.1:6379> lindex list2 1
"b"
127.0.0.1:6379> lindex list2 -1
"e"
127.0.0.1:6379> lindex list2 -2
"d"
LINDEX:获取指定索引上的元素。 正数索引从列表的左端开始计算,一次向右端递增:最左端元素的索引为0 负数索引从列表的右端开始计算,一次向左端递减:最右端元素的索引为-1.
LINDEX:获取指定索引上的元素
LRANGE:获取指定索引范围上的元素
127.0.0.1:6379> lrange list2 0 -1
- "a"
- "b"
- "c"
- "d"
- "e"
LRANGE:获取指定索引范围上的元素 LRANGE list start end
LRANGE:获取指定索引范围上的元素
LSET:为指定索引设置新元素
-
127.0.0.1:6379> lset list2 -1 f
OK
127.0.0.1:6379> lrange list2 0 -1
- "a"
- "b"
- "c"
- "d"
- "f"
LSET:为指定索引设置新元素 LSET list index new_element
LSET:为指定索引设置新元素
LINSERT:将元素插入列表
-
127.0.0.1:6379> linsert list2 after f g
(integer) 6
127.0.0.1:6379> lrange list2 0 -1
- "a"
- "b"
- "c"
- "d"
- "f"
- "g"
LINSERT:将元素插入列表 LINSERT list BEFORE|AFTER target_element new_element
LINSERT:将元素插入列表
4.12 LTRIM:修剪列表
-
127.0.0.1:6379> ltrim list2 0 4
OK
127.0.0.1:6379> lrange list2 0 -1
- "a"
- "b"
- "c"
- "d"
- "f"
LTRIM:修建列表 LTRIM命令接受一个列表和一个索引范围为参数,并移除列表中位于索引范围之外的所有元素,只保留给定范围之内的元素。 LTRIM list start end 与LRANGE命令一样,LTRIM命令不仅可以处理正数索引,还可以处理负数索引。
LTRIM:修剪列表LTRIM命令接受一个列表和一个索引范围作为参数,并移除列表中位于给定索引范围之外的所有元素,只保留给定范围之内的元素
LREM:从列表中移除指定元素
-
127.0.0.1:6379> rpush list5 a b b a c c a
(integer) 7
127.0.0.1:6379> rpush list6 a b b a c c a
(integer) 7
127.0.0.1:6379> rpush list7 a b b a c c a
(integer) 7
127.0.0.1:6379> lrem list5 0 a
(integer) 3
127.0.0.1:6379> lrange list5 0 -1
- "b"
- "b"
- "c"
- "c"
127.0.0.1:6379> lrem list6 1 a
(integer) 1
127.0.0.1:6379> lrange list6 0 -1 - "b"
- "b"
- "a"
- "c"
- "c"
- "a"
127.0.0.1:6379> lrem list7 -1 a
(integer) 1
LREM:从列表中移除指定元素 LREM list count element count参数的值决定了LREM命令移除元素的方式:
如果count参数的值等于0,那么LREM命令将移除列表中包含的所有指定元素。
如果count参数的值大于0,那么LREM命令将从列表的左端开始向右进行检查,并移除最先发现的count个指定元素。
如果count参数的值小于0,那么LREM命令将从列表的右端开始向左进行检查,并移除最先发现的abs(count)个指定元素。abs即count的绝对值。
LREM:从列表中移除指定元素
BLPOP:阻塞式左端弹出操作
-
127.0.0.1:6379> blpop list2 5
- "list2"
- "a"
127.0.0.1:6379> blpop list2 5 5 - "list2"
- "b"
127.0.0.1:6379> blpop list2 50 - "list2"
- "c"
BLPOP:阻塞式左端弹出操作 BLPOP命令式带有阻塞的左端弹出操作,它接受任意多个列表以及一个妙计精度的超时时限作为参数: BLPOP list [list ...] timeout
BLPOP:阻塞式左端弹出操作BLPOP命令是带有阻塞功能的左端弹出操作,它接受任意多个列表以及一个秒级精度的超时时限作为参数:
BRPOP:阻塞式右端弹出操作
-
127.0.0.1:6379> brpop list2 30 30
- "list2"
- "f"
BRPOP:阻塞式右端弹出操作 BRPOP命令式带有阻塞功能的右端弹出操作,除了弹出的方向不同之外,其他方面都和BLPOP命令一样。
BRPOP:阻塞式右端弹出操作BRPOP命令是带有阻塞功能的右端弹出操作,除了弹出的方向不同之外,其他方面都和BLPOP命令一样:
BRPOPLPUSH:阻塞式弹出并推入操作
- BRPOPLPUSH:阻塞式弹出并推入操作 BRPOPLPUSH命令式RPOPLPUSH命令的阻塞版本,BRPOPPUSH命令接受一个源列表、一个目标列表以及一个妙级精度的超时时限作为参数: BRPOPLPUSH source target timeout
BRPOPLPUSH:阻塞式弹出并推入操作BRPOPLPUSH命令是RPOPLPUSH命令的阻塞版本,BRPOPLPUSH命令接受一个源列表、一个目标列表以及一个秒级精度的超时时限作为参数: