二,redis常用的数据类型--list

二,list数据类型----》列表

1,常用指令

1)lpush 命令将一个或多个值插入到列表头部

2)lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定

127.0.0.1:6379> lpush list laoli laowang laozhang laoxu
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "laoxu"
2) "laozhang"
3) "laowang"
4) "laoli"
127.0.0.1:6379> lrange list 0 2
1) "laoxu"
2) "laozhang"
3) "laowang"

在上面可以看出,最后一个laoxu在第一位,第一个输入的laoli在最后一位,可以看出,lpush命令是将值插入到列表的头部。

3)rpush  是将数值插入列表的尾部,和lpush是相反的

127.0.0.1:6379> rpush list1 li sun wang zhang xu
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "li"
2) "sun"
3) "wang"
4) "zhang"
5) "xu"

4)lpop和rpop

    lpop是一处第一个元素;rpop是移除第二个元素;

127.0.0.1:6379> lrange list1 0 -1
1) "li"
2) "sun"
3) "wang"
4) "zhang"
5) "xu"
127.0.0.1:6379> lpop list1
"li"
127.0.0.1:6379> rpop list1
"xu"
127.0.0.1:6379> lrange list1 0 -1
1) "sun"
2) "wang"
3) "zhang"

 5)lrem 移除指定的key

127.0.0.1:6379> lrange list 0 -1
1) "laoxu"
2) "laozhang"
3) "laowang"
4) "laoli"
127.0.0.1:6379> lrem list 1 laozhang
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "laoxu"
2) "laowang"
3) "laoli"

6)ltrim 修剪list里面的值

127.0.0.1:6379> lrange list 0 -1
1) "laoxu"
2) "laowang"
3) "laoli"
127.0.0.1:6379> ltrim list 1 2
OK
127.0.0.1:6379> lrange list 0 -1
1) "laowang"
2) "laoli"

7)rpoplpush  将最后一个元素移除,并存放到一个list列表里面并返还

127.0.0.1:6379> lrange list 0 -1
1) "laolv"
2) "laol"
3) "laog"
4) "laow"
5) "laowang"
6) "laoli"
127.0.0.1:6379> rpoplpush list laotest
"laoli"
127.0.0.1:6379> lrange list 0 -1
1) "laolv"
2) "laol"
3) "laog"
4) "laow"
5) "laowang"
127.0.0.1:6379> lrange laotest 0 -1
1) "laoli"

8)lset 

  Redis Lset

通过索引来设置元素的值。

  当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误

第一个,检查list是否存在,不存在新建list,下面是hellolaowang变成laolihello

127.0.0.1:6379> exists list
(integer) 0
127.0.0.1:6379> lpush list hellolaoli
(integer) 1
127.0.0.1:6379> lpush list hellolaowang
(integer) 2
127.0.0.1:6379> lrange list 1 -1
1) "hellolaoli"
127.0.0.1:6379> lrange list 0 -1
1) "hellolaowang"
2) "hellolaoli"
127.0.0.1:6379> lset list 0 laolihello
OK
127.0.0.1:6379> lrange list 0 -1
1) "laolihello"
2) "hellolaoli"

第二个,不存在的list,会报错

127.0.0.1:6379> keys *
1) "list"
127.0.0.1:6379> lset list1 0 test
(error) ERR no such key

9)linsert 在列表元素的前后插入元素,如果列表中的元素不存在,则新插入的元素无效

      可以应用到消息队列场景。

127.0.0.1:6379> lrange list 0 -1
1) "laolihello"
2) "hellolaoli"
127.0.0.1:6379> linsert list before hellolaoli hello
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "laolihello"
2) "hello"
3) "hellolaoli"
127.0.0.1:6379> linsert list after hellolaoli laoli
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "laolihello"
2) "hello"
3) "hellolaoli"
4) "laoli"
127.0.0.1:6379> linsert list after h test
(integer) -1

2,list小结

1)list其实是双向的链表,可以反向的查找和遍历;

2)list可以作为栈,可以作为队列

3)可以应用于消息队列系统

原文地址:https://www.cnblogs.com/invban/p/14189840.html