Redis list数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis list数据类型相关的知识,希望对你有一定的参考价值。

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


1、lpush: 在key对应的list头部添加字符串元素,获取数据时,顺序和添加元素的顺序是反的。先进后出

127.0.0.1:6379> lpush mylist hello 
(integer) 1
127.0.0.1:6379> lpush mylist world 
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"


2、lrange:获取链表的指定下标位置的元素


3、rpush:在key对应的list的尾部添加字符串元素,获取数据时和添加元素时的顺序是一样的,先进先出

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


4、linsert:在key对应list的特定位置前或者后添加字符串元素

127.0.0.1:6379> linsert mylist before hello hi
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hi"
3) "hello"


5、lset:设置list中指定下标的元素值。用来替换元素

127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hi"
3) "hello"
127.0.0.1:6379> lset mylist 0 WORLD
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "WORLD"
2) "hi"
3) "hello"


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

从头部删除

127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "world"
3) "hello"
4) "WORLD"
5) "hi"
6) "hello"
127.0.0.1:6379> lrem mylist 1 hello
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
3) "WORLD"
4) "hi"
5) "hello"


从尾部删除

127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
3) "WORLD"
4) "hi"
5) "hello"
127.0.0.1:6379> lrem mylist -1  hello
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
3) "WORLD"
4) "hi"


7、ltrim:保留指定key的值范围内的数据

127.0.0.1:6379> lrange mylist02 0 -1
1) "hello"
2) "world"
3) "two"
4) "one"
5) "three"
127.0.0.1:6379> ltrim mylist02 1 3 //保留1下标到3小标的元素
OK
127.0.0.1:6379> lrange mylist02 0 -1
1) "world"
2) "two"
3) "one"


8、lpop:从list头部删除元素,并返回该元素

127.0.0.1:6379> lrange mylist02 0 -1
1) "world"
2) "two"
3) "one"
127.0.0.1:6379> lpop mylist02 
"world"
127.0.0.1:6379> lrange mylist02 0 -1
1) "two"
2) "one"


9、rpop:从list尾部删除元素,并返回元素

127.0.0.1:6379> lrange mylist02 0 -1
1) "two"
2) "one"
127.0.0.1:6379> rpop mylist02 
"one"
127.0.0.1:6379> lrange mylist02 0 -1
1) "two"


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

127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
3) "WORLD"
4) "hi"
127.0.0.1:6379> lrange mylist02 0 -1
1) "two"
127.0.0.1:6379> rpoplpush mylist mylist02
"hi"
127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
3) "WORLD"
127.0.0.1:6379> lrange mylist02 0 -1
1) "hi"
2) "two"


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

127.0.0.1:6379> lrange mylist 0 -1
1) "world"
2) "hello"
3) "WORLD"
127.0.0.1:6379> lindex mylist 1
"hello"


12、llen:返回list元素的个数

127.0.0.1:6379> llen mylist
(integer) 3



本文出自 “zengestudy” 博客,请务必保留此出处http://zengestudy.blog.51cto.com/1702365/1854041

以上是关于Redis list数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Redis学习之数据类型List详解

Redis数据类型之List

Redis数据类型 之 list #yyds干货盘点#

如何在Redis通过StackExchange.Redis 存储集合类型List

《闲扯Redis四》List数据类型底层编码转换

Redis五大数据类型之List