01、存储类型
存储有序的字符串(从左到右或从右到左),元素可以重复。可以充当队列和栈的角色。
02、操作命令
lpush key1 a
lpush key1 c b
rpush key1 e
lpop key1
lpop key1
rpop key1
lindex 0
lrange 0 -1
【3】、存储(实现)原理
早期的版本中,数据量较小时用ziplist存储,达到临界值时转换为linkedlist进行存储,分别对应OBJ_ENCODING_ZIPLIST和OBJ_ENCODING_LINKEDLIST。
3.2版本之后统一用quicklist来存储
【4】、quicklist
存储了一个双向链表,每个节点都是一个ziplist。
head和tail指向双向列表的表头和表尾。
【5】、应用场景
用户消息时间线timeline
消息队列
List提供了两个阻塞的弹出操作:BLPOP/BRPOP,可以设置超时时间。
BLPOP:BLPOP key 1 timeout移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
BRPOP:BRPOP key 1 timeout移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
队列:rpush blpop
栈:rpush brpop