二,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)可以应用于消息队列系统