redis的list类型以及其操作

lists类型

给你个图;'

lists类型以及操作
List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是每一个子元素都是String类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。

操作:
lpush
从头部添加字符串元素

127.0.0.1:6379> lpush list1 one
(integer) 1 //数字表示list的长度
127.0.0.1:6379> lpush list1 two
(integer) 2
127.0.0.1:6379> lrange list1 0 -1 // 0表示开始展示的元素所在的下标,1表示最后展示的元素所在位置的下标,最后就是-1.0在头的开始位置
1) "two"
2) "one"
127.0.0.1:6379> lpush list1 three four
(integer) 4

rpush
在key对应的list尾部添加字符串元素

127.0.0.1:6379> rpush list01 hello
(integer) 1
127.0.0.1:6379> rpush list01 world
(integer) 2
127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "world"

linsert
向key对应的list的指定元素前或后插入元素

127.0.0.1:6379> linsert list01 before "world" java
(integer) 3
127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "java"
3) "world"
127.0.0.1:6379> linsert list01 after "world" "jiangxi"
(integer) 4
127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "java"
3) "world"
4) "jiangxi"

lrange
查看指定下标范围的对应list中的值

127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "java"
3) "world"
4) "jiangxi"
127.0.0.1:6379> lrange list01 1 2
1) "java"
2) "world"

Lset
设置list中指定下标的值

127.0.0.1:6379> lset list01 0 "hi"
OK
127.0.0.1:6379> lrange list01 0 -1
1) "hi"
2) "java"
3) "world"
4) "jiangxi"
127.0.0.1:6379>

lrem
从key对应的list中删除n个和value相同的元素(n<0从尾删除,n=0全部删除)

127.0.0.1:6379> lpush list01 hello world hello world world hello hi my my hello hello
(integer) 11
127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "hello"
3) "my"
4) "my"
5) "hi"
6) "hello"
7) "world"
8) "world"
9) "hello"
10) "world"
11) "hello"
127.0.0.1:6379> lrem list01 1 "hello"
(integer) 1
127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "my"
3) "my"
4) "hi"
5) "hello"
6) "world"
7) "world"
8) "hello"
9) "world"
10) "hello"
127.0.0.1:6379> lrem list01 -1 "hello"
(integer) 1
127.0.0.1:6379> lrange list01 0 -1
1) "hello"
2) "my"
3) "my"
4) "hi"
5) "hello"
6) "world"
7) "world"
8) "hello"
9) "world"
127.0.0.1:6379> lrem list01 0 "hello"
(integer) 3
127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "my"
3) "hi"
4) "world"
5) "world"
6) "world"
127.0.0.1:6379>

ltrim
保留指定key的值范围内的数据,其他的删除

127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "my"
3) "hi"
4) "world"
5) "world"
6) "world"
127.0.0.1:6379> ltrim list01 1 2
OK
127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "hi"

lpop
从list的头部删除元素,并返回删除元素

127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "hi"
127.0.0.1:6379> lpop list01
"my"
127.0.0.1:6379> lrange list01 0 -1
1) "hi"

rpop
从list的尾部删除元素,并返回删除元素

127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "name"
3) "is"
127.0.0.1:6379> rpop list01
"is"
127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "name"
127.0.0.1:6379>


rpoplpush
从第一个list的尾部移除元素并添加到第二个list的头部

127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "name"
3) "is"
4) "guo"
5) "daxia"
127.0.0.1:6379> lpush list02 i like java
(integer) 3
127.0.0.1:6379> lrange list02 0 -1
1) "java"
2) "like"
3) "i"
127.0.0.1:6379> rpoplpush list01 list02
"daxia"
127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "name"
3) "is"
4) "guo"
127.0.0.1:6379> lrange list02 0 -1
1) "daxia"
2) "java"
3) "like"
4) "i"


lindex
返回名称为key的list中index位置的元素

127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "name"
3) "is"
4) "guo"
5) "daxia"
127.0.0.1:6379> lindex list01 5
(nil)
127.0.0.1:6379> lindex list01 4
"daxia"

llen
返回key对应的list的长度

127.0.0.1:6379> lrange list01 0 -1
1) "my"
2) "name"
3) "is"
4) "guo"
5) "daxia"
127.0.0.1:6379> llen list01
(integer) 5
原文地址:https://www.cnblogs.com/aigeileshei/p/6566783.html