5.Redis 数据类型之一:List

zhanglei 2022年07月23日 299次浏览

5.Redis 数据类型之一:List

redis中,我也没可以把List玩成栈。队列

List常见命令

#########################################################
# lpush key element    入栈一个元素
# lpop key start end   出栈一个元素
# lrange key start end  查看指定索引范围的元素
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> keys *
1) "list"
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> 
##########################################################
# rpush 从栈底入栈
# rpop  从栈底出栈

127.0.0.1:6379> rpush list right
(integer) 4
127.0.0.1:6379> lrange list 0 3
1) "three"
2) "two"
3) "one"
4) "right"
127.0.0.1:6379> rpop list
"right"
127.0.0.1:6379> 
##########################################################
# lindex key index 通过索引下表获得list中的某一个值

127.0.0.1:6379> lindex list 0
"three"
127.0.0.1:6379> lindex list 2
"one"
127.0.0.1:6379> 
##########################################################
#llen key 查看list里元素的个数
127.0.0.1:6379> llen list
(integer) 3
127.0.0.1:6379> 
##########################################################
# lrem key count element 删除list中的元素element,个数为count
127.0.0.1:6379> lrem list 1 one
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
127.0.0.1:6379> 
#########################################################
# linsert key before|after pivot value 
# 在list中某一特定元素的前后插入一个元素
127.0.0.1:6379> clear
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> rpush list lutingting
(integer) 1
127.0.0.1:6379> rpush list zhanglei
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "lutingting"
2) "zhanglei"
127.0.0.1:6379> linsert list before zhanglei love
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "lutingting"
2) "love"
3) "zhanglei"
127.0.0.1:6379> 

小结

list底层是链表,before、after Node,left ,right 都可以插值

如果 key 不存在,创建新的链表

如果 key 存在,新增|删除元素

如果移除了所有元素,空链表,不存在

在两边插入值,效率最高,中间元素,相对效率低