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 存在,新增|删除元素
如果移除了所有元素,空链表,不存在
在两边插入值,效率最高,中间元素,相对效率低