Redis的列表允许用户从两端推入(push)和弹出(pop)元素。
列表是由多个字符串组成的有序可重复的序列。是链表结构
LPUSH key value [value …]
依次压入链表中 返回的是生成的链表长度
且可以通过该命令追加。
127.0.0.1:6379> LPUSH mylist 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> LRANGE mylist 0 8
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
127.0.0.1:6379> LPUSH mylist 1 2 3 4
(integer) 12
127.0.0.1:6379> LRANGE mylist 0 12
1) "4"
2) "3"
3) "2"
4) "1"
5) "8"
6) "7"
7) "6"
8) "5"
9) "4"
10) "3"
11) "2"
12) "1"
LRANGE key start stop
返回的是索引是start到end,start从0开始。
返回链表的长度
127.0.0.1:6379> llen mylist
(integer) 12
第几位的值,从栈顶开始算
127.0.0.1:6379> LINDEX mylist 0
"4"
127.0.0.1:6379> LINDEX mylist 2
"2"
127.0.0.1:6379> LRANGE mylist 0 12
1) "4"
2) "3"
3) "2"
4) "1"
5) "8"
6) "7"
7) "6"
8) "5"
9) "4"
10) "3"
11) "2"
12) "1"
弹出栈顶元素,并返回值
127.0.0.1:6379> LPOP mylist
"4"
127.0.0.1:6379> LRANGE mylist 0 12
1) "3"
2) "2"
3) "1"
4) "8"
5) "7"
6) "6"
7) "5"
8) "4"
9) "3"
10) "2"
11) "1"
插入元素
insert key after|before search value
在链表key中寻找值为search的元素,并在改元素前(或后)插入值value
注:如果有多个值search以第一个为主,执行命令就结束了,因此不会插入多个value
127.0.0.1:6379> LINSERT mylist BEFORE 2 88
(integer) 12
127.0.0.1:6379> LINSERT mylist AFTER 2 99
(integer) 13
127.0.0.1:6379> LRANGE mylist 0 15
1) "3"
2) "88"
3) "2"
4) "99"
5) "1"
6) "8"
7) "7"
8) "6"
9) "5"
10) "4"
11) "3"
12) "2"
13) "1"
如果存在list,才会去push
127.0.0.1:6379> LPUSHX mylistnotexist 7
(integer) 0
127.0.0.1:6379> LPUSHX mylist 7
(integer) 14
127.0.0.1:6379> keys *
1) "mylisy"
2) "mylist"
127.0.0.1:6379> LRANGE mylist 0 15
1) "7"
2) "3"
3) "88"
4) "2"
5) "99"
6) "1"
7) "8"
8) "7"
9) "6"
10) "5"
11) "4"
12) "3"
13) "2"
14) "1"
127.0.0.1:6379> LRANGE mylistnotexist 0 2
(empty list or set)
LREM key count value
删除链表名为key中的count个value的值,顺序按出栈的顺序
返回的值是删除的值的个数(改变了多少个元素)
127.0.0.1:6379> LPUSH mylist 2 2 2 2
(integer) 18
127.0.0.1:6379> LRANGE mylist 0 18
1) "2"
2) "2"
3) "2"
4) "2"
5) "7"
6) "3"
7) "88"
8) "2"
9) "99"
10) "1"
11) "8"
12) "7"
13) "6"
14) "5"
15) "4"
16) "3"
17) "2"
18) "1"
127.0.0.1:6379> LREM mylist 5 2
(integer) 5
127.0.0.1:6379> LRANGE mylist 0 18
1) "7"
2) "3"
3) "88"
4) "99"
5) "1"
6) "8"
7) "7"
8) "6"
9) "5"
10) "4"
11) "3"
12) "2"
13) "1"
127.0.0.1:6379>
LSET key index value
设置指定位置的值。
127.0.0.1:6379> LRANGE mylist 0 18
1) "7"
2) "3"
3) "88"
4) "99"
5) "1"
6) "8"
7) "7"
8) "6"
9) "5"
10) "4"
11) "3"
12) "2"
13) "1"
127.0.0.1:6379> LSET mylist 2 666666
OK
127.0.0.1:6379> LRANEG mylist 0 12
(error) ERR unknown command 'LRANEG'
127.0.0.1:6379> Lrange mylist 0 12
1) "7"
2) "3"
3) "666666"
4) "99"
5) "1"
6) "8"
7) "7"
8) "6"
9) "5"
10) "4"
11) "3"
12) "2"
13) "1"
127.0.0.1:6379>