redis学习-五大数据类型-List
List

添加

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> lrange list 0 1
1) "three"
2) "two"
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  #移除list的第一个元素
"three"
127.0.0.1:6379> rpop list  #移除list的最后一个元素
"right"
127.0.0.1:6379> lrem list 1 one  #移除指定个数的值
(integer) 1

获取值

127.0.0.1:6379> lindex list 0  #通过下标获取值
"two"

长度

127.0.0.1:6379> lpush list one
(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> llen list  #返回长度
(integer) 3

修剪,截断list

127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> ltrim list 1 2
OK
127.0.0.1:6379> lrange list 0 -1  #通过下标截取指定字符串,list只剩截取元素
1) "three"
2) "two"

rpoplpush : 移除最后一个元素,移到新列表中

127.0.0.1:6379> lpush list one
(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> lpush list four
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> rpoplpush list otherlist
"one"
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
127.0.0.1:6379> lrange otherlist 0 -1
1) "one"

lset : 将列表指定下标的值替换为另一个值,更新

127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lset list 0 444
OK
127.0.0.1:6379> lrange list 0 -1
1) "444"
2) "three"
3) "two"
4) "one"

linsert : 将具体值插入到list某个具体值的前面或后面

127.0.0.1:6379> lrange list 0 -1
1) "444"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> linsert list before two 2222
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "444"
2) "three"
3) "2222"
4) "two"
5) "one"
127.0.0.1:6379> linsert list after two 1111
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "444"
2) "three"
3) "2222"
4) "two"
5) "1111"
6) "one"
小结:
    实际是一个链表,before Node after
    如果key不存在,创建新的链表
    如果key存在,新增内容
    如果移除所有值,链表不存在
    在两边插入或改变值,效率最高,中间元素,效率低一点
    队列(lpush rpop),栈(lpush lpop)