List
这里边的所有命令都是一 ‘L’ 开头的
其实就是一个双向链表,可以使用linsert … before 和 linsert … after 在这个值的前边或者是后边插入值;还可以使用 lpush(left push) 和 rpush(right push)
如果key存在,增加数据或者删除数据;不存在就创建链表,添加数据
插入与删除
127.0.0.1:6379> lpush list one #在list中插入一个元素
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1 #查看可以看出,默认插入的方法的头插法
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> rpush list right #在这个list的尾部插入一个元素
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
================================================================================
127.0.0.1:6379> lpop list #移除顶部元素
"three"
127.0.0.1:6379> rpop list #移除尾部元素
"right"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
通过下标获取值
127.0.0.1:6379> lindex list 0
"two"
127.0.0.1:6379> lindex list 1
"one"
获取list的长度与移除指定的值
127.0.0.1:6379> lpush list three
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lpush list one
(integer) 4
127.0.0.1:6379> llen list # 查看list的长度
(integer) 4
127.0.0.1:6379> lrange list 0 -1 # 查看list中的值
1) "one"
2) "three"
3) "three"
4) "two"
127.0.0.1:6379> lrem list 1 two # 指定移除two
(integer) 1
127.0.0.1:6379> lrem list 2 three # 如果存在多个相同的value的时候,可以一起移除
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "one"
trim修剪
127.0.0.1:6379> rpush mylist aaa
(integer) 1
127.0.0.1:6379> rpush mylist bbb
(integer) 2
127.0.0.1:6379> rpush mylist ccc
(integer) 3
127.0.0.1:6379> rpush mylist ddd
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "aaa"
2) "bbb"
3) "ccc"
4) "ddd"
127.0.0.1:6379> ltrim mylist 1 2 #只要mylist中下标在1~2号之间的元素
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "bbb"
2) "ccc"
移除当前list的值,把它添加到另一个list中
127.0.0.1:6379> rpush mylist zkw
(integer) 1
127.0.0.1:6379> rpush mylist ls
(integer) 2
127.0.0.1:6379> rpush mylist zs
(integer) 3
127.0.0.1:6379> rpush mylist ww
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "zkw"
2) "ls"
3) "zs"
4) "ww"
127.0.0.1:6379> rpoplpush mylist outherlist # 组合命令,移除mylist中的最后一个元素,把它插入到outherlist中
"ww"
127.0.0.1:6379> lrange mylist 0 -1
1) "zkw"
2) "ls"
3) "zs"
127.0.0.1:6379> lrange outherlist 0 -1
1) "ww"
将list中的指定下标的值替换成另一个
127.0.0.1:6379> exists list # 判断是否存在这个list
(integer) 0
127.0.0.1:6379> lset list 0 redis # 如果list中当前的key存在值就更新,不存在就报错
(error) ERR no such key
127.0.0.1:6379> lpush list java
(integer) 1
127.0.0.1:6379> lindex list 0
"java"
127.0.0.1:6379> lset list 0 redis # 当前key存在值,就更新
OK
127.0.0.1:6379> lindex list 0
"redis"
在一个具体的value的前边或者是后边插入一个值
127.0.0.1:6379> lpush mylist love
(integer) 1
127.0.0.1:6379> linsert mylist before love I # 在love 的前边插入 I
(integer) 2
127.0.0.1:6379> linsert mylist after love you # 在love的后边插入 you
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "I"
2) "love"
3) "you"