Redis学习05——存储字符串列表(list)

--------------------- 
作者:愤怒的小明 
来源:CSDN 
原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118541 

Redis学习05存储字符串列表list
一字符串列表list 说明
二两端添加
1 lpush key value1 value2
2 rpush key value1 value2
三查看列表
1 lrange key start end
四两端弹出
1 lpop key
2 rpop key
五获取列表中元素的个数
1 llen key
六其他命令
1 lpushx key value
2 rpushx key value
3 lrem key count value
4 lset key index value
5 linsert key beforeafter pivot value
6 rpoplpush source destination
Redis学习05——存储字符串列表(list)
一、字符串列表(list) 说明
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新元素。在插入时,如果该键不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被删除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是 4294967295。

 

二、两端添加
2.1 lpush key value1 value2 ….
命令:

lpush key value1 value2 ....
1
含义: 
在指定的key所关联的list的头部(left)插入所有的value,如果该key不存在,那么该命令在插入之前创建一个与该key关联的空链表,之后再向该链表的头部添加数据。插入成功,返回元素的个数。

示例

127.0.0.1:6379> lpush mylist a b c d e f
(integer) 6
1
2
3
2.2 rpush key value1 value2 …
命令:

rpush key value1 value2 ....
1
含义: 
在该list的尾部(right)添加元素

示例

127.0.0.1:6379> rpush mylist 1 2 3 4 5 
(integer) 11
1
2
3
三、查看列表
3.1 lrange key start end
命令:

lrange key start end
1
含义: 
获取链表中从start到end的元素的值,start、end从0开始计数。也可以为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个……

示例

127.0.0.1:6379> lrange mylist 0 -1
1) "f"
2) "e"
3) "d"
4) "c"
5) "b"
6) "a"
7) "1"
8) "2"
9) "3"
10) "4"
11) "5"
1
2
3
4
5
6
7
8
9
10
11
12
13
四、两端弹出
4.1 lpop key
命令:

lpop key
1
含义: 
返回并且弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若存在,返回链表头部元素

示例

127.0.0.1:6379> lpop mylist
"f"
127.0.0.1:6379> lpop mylist
"e"
1
2
3
4
4.2 rpop key
命令:

rpop key
1
含义: 
从尾部弹出元素

示例

127.0.0.1:6379> rpop mylist
"5"
127.0.0.1:6379> rpop mylist
"4"
127.0.0.1:6379> lrange mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"
1
2
3
4
5
6
7
8
9
10
11
12
13
五、获取列表中元素的个数
5.1 llen key
命令:

llen key
1
含义: 
返回指定的key关联的链表中的元素的数量

示例

127.0.0.1:6379> llen mylist
(integer) 7
1
2
3
六、其他命令
6.1 lpushx key value
命令:

lpushx key value 
1
含义: 
仅当参数中指定的key存在时,向关联的list的头部插入value。如果不存在,将不会插入

示例

127.0.0.1:6379> lrange mylist 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
5) "1"
6) "2"
7) "3"
127.0.0.1:6379> lpushx mylist e
(integer) 8
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "1"
7) "2"
8) "3"
127.0.0.1:6379> lpushx mylistxxx eee
(integer) 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
6.2 rpushx key value
命令:

rpushx key value
1
含义: 
在list的尾部添加元素

示例

127.0.0.1:6379> rpushx mylist 4
(integer) 9
127.0.0.1:6379> lrange mylist 0 -1
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"
6) "1"
7) "2"
8) "3"
9) "4"
127.0.0.1:6379> rpushx mylistwwww jjjj
(integer) 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
6.3 lrem key count value
命令:

lrem key count value
1
含义: 
删除count个值为value的元素。如果count大于0,从头开始遍历并删除count个值为value的元素。 
如果count小于0,从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。

示例

127.0.0.1:6379> lpush mylist2 a b c a a b b a b a
(integer) 10
127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "b"
3) "a"
4) "b"
5) "b"
6) "a"
7) "a"
8) "c"
9) "b"
10) "a"
127.0.0.1:6379> lrem mylist2 2 a
(integer) 2
127.0.0.1:6379> lrange mylist2 0 -1
1) "b"
2) "b"
3) "b"
4) "a"
5) "a"
6) "c"
7) "b"
8) "a"
127.0.0.1:6379> lrem mylist2 -2 a
(integer) 2
127.0.0.1:6379> lrange mylist2 0 -1
1) "b"
2) "b"
3) "b"
4) "a"
5) "c"
6) "b"
127.0.0.1:6379> lrem mylist2 0 b
(integer) 4
127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "c"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
6.4 lset key index value
命令:

lset key index value
1
含义: 
设置链表中的index的脚标的元素值。0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛出异常

示例

127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "c"
127.0.0.1:6379> lset mylist2 1 ccccc
OK
127.0.0.1:6379> lrange mylist2 0 -1
1) "a"
2) "ccccc"
127.0.0.1:6379> lset mylist2 -2 aaaaaaaa
OK
127.0.0.1:6379> lrange mylist2 0 -1
1) "aaaaaaaa"
2) "ccccc"
1
2
3
4
5
6
7
8
9
10
11
12
13
6.5 linsert key before|after pivot value
命令:

linsert key before|after pivot value
1
含义: 
在pivout元素前或者后面插入value这个元素

示例

127.0.0.1:6379> lrange mylist2 0 -1
1) "aaaaaaaa"
2) "ccccc"
127.0.0.1:6379> linsert mylist2 before aaaaaaaa a1
(integer) 3
127.0.0.1:6379> lrange mylist2 0 -1
1) "a1"
2) "aaaaaaaa"
3) "ccccc"
127.0.0.1:6379> linsert mylist2 after aaaaaaaa bbb
(integer) 4
127.0.0.1:6379> lrange mylist2 0 -1
1) "a1"
2) "aaaaaaaa"
3) "bbb"
4) "ccccc"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
6.6 rpoplpush source destination
命令:

rpoplpush source destination
1
含义: 
将链表的尾部元素弹出并添加到头部

示例

127.0.0.1:6379> lrange mylist2 0 -1
1) "a1"
2) "aaaaaaaa"
3) "bbb"
4) "ccccc"
127.0.0.1:6379> rpoplpush mylist2 mylist2
"ccccc"
127.0.0.1:6379> lrange mylist2 0 -1
1) "ccccc"
2) "a1"
3) "aaaaaaaa"
4) "bbb"
127.0.0.1:6379> lpush mylist3 333 4444 
(integer) 2
127.0.0.1:6379> lrange mylist3 0 -1
1) "4444"
2) "333"
127.0.0.1:6379> rpoplpush mylist2 mylist3
"bbb"
127.0.0.1:6379> lrange mylist2 0 -1
1) "ccccc"
2) "a1"
3) "aaaaaaaa"
127.0.0.1:6379> lrange mylist3 0 -1
1) "bbb"
2) "4444"
3) "333"

posted @ 2019-04-18 20:49  一心二念  阅读(452)  评论(0编辑  收藏  举报