redis的list命令总结

redis的list命令总结

文章目录

它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

1. lpush / rpush

创建list

lpush类似创建一个栈,先进后出,逆序

rpush类似创建一个队列,先进先出,顺序

lrange 获取指定范围list的value

0是第一个,-1是最后一个

##语法:lpush key value[value...]
127.0.0.1:6379> lpush list06 1 2 3 a b c
(integer) 6
127.0.0.1:6379> lrange list06 0 -1
1) "c"
2) "b"
3) "a"
4) "3"
5) "2"
6) "1"

##语法:rpush key value[value...]
127.0.0.1:6379> rpush list07 1 2 3  a b c
(integer) 6
127.0.0.1:6379> lrange list07 0 -1
1) "1"
2) "2"
3) "3"
4) "a"
5) "b"
6) "c"

2. lpop / rpop

弹出list最左/最右值

127.0.0.1:6379> lrange list06 0 -1
1) "c"
2) "b"
3) "a"
4) "3"
5) "2"
6) "1"
##语法:lpop key
127.0.0.1:6379> lpop list06
"c"
##语法:rpop key
127.0.0.1:6379> rpop list06
"1"

3. lindex

访问list指定index的值

127.0.0.1:6379> lpush list01 1 2 3 4 5 6 7 8 9 10
(integer) 10
##语法:lindex key index
127.0.0.1:6379> lindex list01 0
"10"
127.0.0.1:6379> lindex list01 -1
"1"

127.0.0.1:6379> rpush list02 1 2 3 4 5 6 7 8 9 10
(integer) 10
127.0.0.1:6379> lindex list02 0
"1"
127.0.0.1:6379> lindex list02 -1
"10"

4 .llen

获取list长度

##语法:llen key
127.0.0.1:6379> llen list01
(integer) 10
127.0.0.1:6379> llen list02
(integer) 10

5. lrem

删除n个value

##语法:lrem key count value
127.0.0.1:6379> lrem list01 1 2
(integer) 1
127.0.0.1:6379> lrange list01 0 -1
1) "10"
2) "9"
3) "8"
4) "7"
5) "6"
6) "5"
7) "4"
8) "3"
9) "1"

6. ltrim

截取指定范围的值再赋值给key

##语法:ltrim key start end
127.0.0.1:6379> ltrim list02 1 -2
OK
127.0.0.1:6379> lrange list02 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"
6) "7"
7) "8"
8) "9"

7. rpoplpush

将一个list中的值出栈,并且添加到另一个list的最左侧

127.0.0.1:6379> lpush list03 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lpush list04 6 7 8 9 10
(integer) 5
## 将list03中的1出栈,添加到list04最左侧
##语法: rpoplpush source destnation
127.0.0.1:6379> rpoplpush list03 list04
"1"
127.0.0.1:6379> lrange list04 0 -1
1) "1"
2) "10"
3) "9"
4) "8"
5) "7"
6) "6"
127.0.0.1:6379> lrange list03 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
127.0.0.1:6379> 

8. lset

从左向右替换index上的元素

127.0.0.1:6379> lpush list5 c java c++
(integer) 3
127.0.0.1:6379> lrange list5 0 -1
1) "c++"
2) "java"
3) "c"
##将第二个位置上的元素java修改为python
##语法:lset key index value
127.0.0.1:6379> lset list5 1 python
OK
127.0.0.1:6379> lrange list5 0 -1
1) "c++"
2) "python"
3) "c"

9. linsert

在list某个已有值的前后再添加具体值

127.0.0.1:6379> lrange list07 0 -1
1) "1"
2) "2"
3) "3"
4) "a"
5) "b"
6) "c"

##linsert key before|after index value
127.0.0.1:6379> linsert list07 before 1 lalala
(integer) 7
127.0.0.1:6379> lrange list07 0 -1
1) "lalala"
2) "1"
3) "2"
4) "3"
5) "a"
6) "b"
7) "c"

127.0.0.1:6379> linsert list07 after 1 hihihi
(integer) 9
127.0.0.1:6379> lrange list07 0 -1
1) "lalala"
2) "1"
3) "hihihi"
4) "2"
5) "3"
6) "a"
7) "b"
8) "c"

上一篇:Redis高频面试题之缓存穿透、缓存击穿和缓存雪崩,Java开发者跳槽面试


下一篇:redis将一个key设置为永不过期