Redis(五)—— List 列表类型详解
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
实例
将三个值插入名为 list 的列表的头部(左边): LPUSH
127.0.0.1:6379> LPUSH list one
(integer) 1
127.0.0.1:6379> lpush list hello
(integer) 2
127.0.0.1:6379> lpush list hi #最后存放的值下标为0
(integer) 3
127.0.0.1:6379> lrange list 0 1
1) "hi" #0
2) "hello" #1
127.0.0.1:6379> lrange list 0 -1 #查看列表中所有的值
1) "hi" #0
2) "hello" #1
3) "one" #2
将值插入名为 list 的列表的尾部(右边): RPUSH
127.0.0.1:6379> rpush list right
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "hi"
2) "hello"
3) "one"
4) "right"
**取出 list 列表中的值: lpop rpop **
127.0.0.1:6379> lrange list 0 -1
1) "hi"
2) "hello"
3) "one"
4) "right"
127.0.0.1:6379> lpop list #从列表的头部(左边)取出
"hi"
127.0.0.1:6379> rpop list #列表的尾部(右边)取出
"right"
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
127.0.0.1:6379> lindex list 0 #通过list下标获取值
"hello"
127.0.0.1:6379> lindex list 1
"one"
**返回列表长度 llen **
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
3) "two"
4) "three"
127.0.0.1:6379> llen list
(integer) 4
**移除列表中指定个数的value lrem **
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "one"
3) "two"
4) "three"
5) "three"
127.0.0.1:6379> lrem list 1 one #移除list 中的一个 one
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "two"
3) "three"
4) "three"
127.0.0.1:6379> lrem list 2 three #移除list 中的两个 three
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "two"
截取列表中指定范围的值:截取后列表中只剩下被截取的内容 ltrim
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
3) "hello3"
4) "hello4"
5) "hello5"
127.0.0.1:6379> ltrim mylist 1 2 #截取list 中[1,2]的值
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hello2"
2) "hello3"
把一个列表的value取出放入另一个列表 rpoplpush
127.0.0.1:6379> lpush mylist hello1
(integer) 3
127.0.0.1:6379> rpush mylist hello4
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
3) "hello3"
4) "hello4"
127.0.0.1:6379> rpoplpush mylist otherlist #从右边(尾部)取出mylist的value,从左边(头部)放入otherlist,如果otherlist不存在则会创建
"hello4"
127.0.0.1:6379> rpoplpush mylist otherlist
"hello3"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379> lrange otherlist 0 -1
1) "hello3"
2) "hello4"
**替换列表中指定下标的值 lset **
127.0.0.1:6379> exists mylist #判断列表是否存在
(integer) 1 #存在
127.0.0.1:6379> lrange mylist 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379> lset mylist 0 hi #替换列表中第一个值,如果第一个值不存在则报错
OK
127.0.0.1:6379> lrange mylist 0 -1
1) "hi"
2) "hello2"
在列表的指定位置插入value,可以选择在某个值前面或者后面插入 linsert
127.0.0.1:6379> lrange mylist 0 -1
1) "hi"
2) "hello2"
#在mylist列表的hello2值前面插入hello1
127.0.0.1:6379> linsert mylist before hello2 hello1
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "hi"
2) "hello1"
3) "hello2"
#在mylist列表的hello2值后面插入hello3
127.0.0.1:6379> linsert mylist after hello2 hello3
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1 #插入完成
1) "hi"
2) "hello1"
3) "hello2"
4) "hello3"
如果把链表中的值都移除,那么链表将不存在
127.0.0.1:6379> lpop mylist
(nil)
127.0.0.1:6379> exists mylist
(integer) 0
6029

被折叠的 条评论
为什么被折叠?



