大家好,今天我们分享一下Redis list列表类型的解释
redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
清空Redis数据库所有信息
127.0.0.1:6379> FLUSHALL
OK
现在数据库里没有东西
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
这里,记住: 所有的list 命令都是以l开头的
以list的方式创建几个值
127.0.0.1:6379> LPUSH list zhangsan
(integer) 1
127.0.0.1:6379> LPUSH list lisi
(integer) 2
127.0.0.1:6379> LPUSH list wangwu
(integer) 3
127.0.0.1:6379> LPUSH list zhaoliu
(integer) 4
127.0.0.1:6379>
输出所有的值(数字下标的方式):倒着来的
127.0.0.1:6379> LRANGE list 0 -1
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
展示第一个和第二个的值:(倒着来的)
127.0.0.1:6379> LRANGE list 0 1
1) "zhaoliu"
2) "wangwu"
我们看见,新加的这一个被放在了最后
127.0.0.1:6379> LRANGE list 0 -1 //把一个值放在最后(右边)
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
5) "jushi"
这里提一下,Redis里的命令是不区分大小写的
这是我们现在的list 当中的数据
127.0.0.1:6379> LRANGE list 0 -1
1) "zhaoliu"
2) "wangwu"
3) "lisi"
4) "zhangsan"
5) "jushi"
移除第一个
127.0.0.1:6379> LPOP list
"zhaoliu"
list 里的所有数据信息
127.0.0.1:6379> LRANGE list 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan"
4) "jushi"
移除最后一个数据
127.0.0.1:6379> RPOP list
"jushi"
127.0.0.1:6379>
list 里的现在所有数据信息
127.0.0.1:6379> LRANGE list 0 -1
1) "wangwu"
2) "lisi"
3) "zhangsan"
通过下标查看某一个值
127.0.0.1:6379> LINDEX list 0 //第一个
"wangwu"
127.0.0.1:6379> LINDEX list 1 //第二个
"lisi"
127.0.0.1:6379> LINDEX list 2 //第三个
"zhangsan"
删除数据库中所有数据
127.0.0.1:6379> FLUSHALL
OK
以list的方式加上三个数据
127.0.0.1:6379> LPUSH list yuwen
(integer) 1
127.0.0.1:6379> LPUSH list shuxue
(integer) 2
127.0.0.1:6379> LPUSH list yingyu
(integer) 3
列出列表的长度
127.0.0.1:6379> LLEN list
(integer) 3
127.0.0.1:6379>
列出所有数据
127.0.0.1:6379> LRANGE list 0 -1
1) "yingyu"
2) "shuxue"
3) "yuwen"
删除指定的值
127.0.0.1:6379> lrem list 1 yuwen
(integer) 1
查看现在的数据
127.0.0.1:6379> LRANGE list 0 -1
1) "yingyu"
2) "shuxue"
127.0.0.1:6379> LREM list 2 yuwen //删除2个yuwen的数据
127.0.0.1:6379> LRANGE list 0 -1
1) "yingyu"
2) "shuxue"
重写添加数据
127.0.0.1:6379> RPUSH test "t1"
(integer) 1
127.0.0.1:6379> RPUSH test "t2"
(integer) 2
127.0.0.1:6379> RPUSH test "t3"
(integer) 3
127.0.0.1:6379> RPUSH test "t4"
(integer) 4
127.0.0.1:6379> RPUSH test "t5"
(integer) 5
查看所有键
127.0.0.1:6379> keys *
1) "test"
这就是我们刚才添加的
127.0.0.1:6379> LRANGE test 0 -1
1) "t1" //编号为0
2) "t2" //这个是1
3) "t3" //这是2
4) "t4" //这是3
5) "t5" //这个是4
6) "t6" //这个是5
127.0.0.1:6379>
保留第二个和第三个
127.0.0.1:6379> LTRIM test 1 2
OK
查看现在的所有的值
注意,编号为0,表示第一个数据,编号为-1 ,表示的是最后一个数据
LRANGE test 0 -1 //这个命令的意思是展示所有的数据
127.0.0.1:6379> LRANGE test 0 -1
1) "t2"
2) "t3"
建这样的数据
127.0.0.1:6379> RPUSH shuaige "1"
(integer) 1
127.0.0.1:6379> RPUSH shuaige "2"
(integer) 2
127.0.0.1:6379> RPUSH shuaige "3"
(integer) 3
127.0.0.1:6379> RPUSH shuaige "4"
(integer) 4
看一下这里有什么
127.0.0.1:6379> LRANGE shuaige 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
将shuaige列表当中最后 的(元素)东西移到laoshi列表 里边
127.0.0.1:6379> RPOPLPUSH shuaige laoshi
"4"
查看现在的数据(没有4了)
127.0.0.1:6379> LRANGE shuaige 0 -1
1) "1"
2) "2"
3) "3"
查看laoshi里边的数据
(发现有4了)
127.0.0.1:6379> LRANGE laoshi 0 -1
1) "4"
这就是一个移动的操作
删除所有数据信息
127.0.0.1:6379> FLUSHALL
OK
判断是否存在shuaige 这个列表(0 表示不存在)
127.0.0.1:6379> EXISTS shuaige
(integer) 0
新建一个叫shuaige的列表,在表中添加数据(da)
127.0.0.1:6379> LPUSH shuaige da
(integer) 1
127.0.0.1:6379>
查看数据
127.0.0.1:6379> LRANGE shuaige 0 0
1) "da"
127.0.0.1:6379>
将shuaige 这个列表当中的第一个值替换为hello
127.0.0.1:6379> LSET shuaige 0 hello
OK
127.0.0.1:6379>
现在它的数据是hello
127.0.0.1:6379> LRANGE shuaige 0 -1
1) "hello"
shuaige这个列表当中不存在1号元素 ,因为它只有一个,(默认为0)
这样做就会报错
127.0.0.1:6379> lset shuaige 1 wo
(error) ERR index out of range
127.0.0.1:6379>
创建列表数据:
127.0.0.1:6379> RPUSH yh "123"
(integer) 1
127.0.0.1:6379> RPUSH yh "456"
(integer) 2
查看
127.0.0.1:6379> LRANGE yh 0 -1
1) "123"
2) "456"
在456的前面加上485
127.0.0.1:6379> LINSERT yh before "456" "485"
(integer) 3
查看现在的数据
127.0.0.1:6379> LRANGE yh 0 -1
1) "123"
2) "485"
3) "456"
也可以在456的后面插入新的数据
127.0.0.1:6379> LINSERT yh after "456" "74125"
(integer) 4
127.0.0.1:6379>
查看现在的数据
127.0.0.1:6379> LRANGE yh 0 -1
1) "123"
2) "485"
3) "456"
4) "74125"
注意点:
Redis 的list 实际上可以理解为为一个链表
, 前后左右都可以插入新的数据
如果key不存在
,要创建新的列表,才可以进行数据插入的操作
如果 存在,就可以直接插入
好了,有关于Redis的list操作就到这里了,谢谢大家