redis的列表是使用双向链表实现的。所以向两端添加元素时间复杂度为0(1),不过使用链表的代价是查找较慢。
1、lpush 、rpush (向左端、右端添加元素),lrange 取一定范围的元素的值,
127.0.0.1:6379> lpush listexample 2
(integer) 1
127.0.0.1:6379> lpush listexample 3 4 5 //一次插入多个元素
(integer) 4
127.0.0.1:6379> lrange listexample 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> rpush listexample 7 8 9
(integer) 7
127.0.0.1:6379> lrange listexample 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "7"
6) "8"
2、lpop 、rpop 从列表两端弹出元素
3、llen 获取表中元素的个数
4、lrem 删除列表中指定的值 lrem key count value (删除key 中 值为value的键,一共删除为count个)
注:当count > 0 时,从左连开始删除 ,当count<=时,从右边开始删除 , 当count=0时,全部删除
127.0.0.1:6379> lrange listexample 0 -1
1) "5"
2) "5"
3) "5"
4) "5"
5) "5"
6) "5"
7) "5"
8) "4"
9) "3"
10) "2"
11) "7"
12) "8"
13) "9"
127.0.0.1:6379> lrem listexample 3 5 //删除3个值为5的元素
(integer) 3
127.0.0.1:6379> lrange listexample 0 -1
1) "5"
2) "5"
3) "5"
4) "5"
5) "4"
6) "3"
7) "2"
8) "7"
9) "8"
10) "9"
127.0.0.1:6379> lpush listexample 3 5 6 7 8 5 3 2 5 9 5
(integer) 17
127.0.0.1:6379> lrange listexample 0 -1
1) "5"
2) "9"
3) "5"
4) "2"
5) "3"
6) "5"
7) "8"
8) "7"
9) "6"
10) "5"
11) "3"
12) "4"
13) "3"
14) "2"
15) "7"
16) "8"
17) "9"
127.0.0.1:6379> lrem listexample -2 5
(integer) 2
127.0.0.1:6379> lrange listexample 0 -1
1) "5"
2) "9"
3) "5"
4) "2"
5) "3"
6) "8"
7) "7"
8) "6"
9) "3"
10) "4"
11) "3"
12) "2"
13) "7"
14) "8"
15) "9"
5、lindex key inde (获得指定索引的元素值) lindex key index
lset kye index value (设置索引的元素值)
127.0.0.1:6379> lindex listexample 3
"2"
127.0.0.1:6379> lindex listexaple -1
(nil)
127.0.0.1:6379> lindex listexample -1
"9"
127.0.0.1:6379> lset listexample 4
(error) ERR wrong number of arguments for 'lset' command
127.0.0.1:6379> lpush listexample 44
(integer) 16
127.0.0.1:6379> lset listexample 5 5555
OK
127.0.0.1:6379> lrange listexample 0 -1
1) "44"
2) "5"
3) "9"
4) "5"
5) "2"
6) "5555"
7) "8"
8) "7"
9) "6"
10) "3"
11) "4"
12) "3"
13) "2"
14) "7"
15) "8"
16) "9"
6、ltrim key start end (只保留列表指定的片段)