该数据类似于数据结构中的队列,但是该结构能够在两端j添加与获取

将一个或多个值value插入到key列表的表头(最左边)
LPUSH key value [value ...]
将一个或多个值value插入到key列表的表尾(最右边)
RPUSH key value [value ...]
移除并返回key列表的头元素
LPOP key
移除并返回key列表的尾元素
RPOP key
返回列表key中指定区间内的元素,区间以偏移量start和stop指定
LRANGE key start stop
从key列表表头弹出一个元素,若列表中没有元素,阻塞等待 timeout秒,如果timeout=0,一直阻塞等待
BLPOP key [key ...] timeout
从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待 timeout秒,如果timeout=0,一直阻塞等待
BRPOP key [key ...] timeout
不常用
BRPOPLPUSH source destination timeout
RPOPLPUSH source destination
LINDEX key index
LLEN key
LINSERT key BEFORE|AFTER pivot element
LREM key count element
LSET key index element
LTRIM key start stop
list是一个有序(加入顺序)的数据结构,Redis采用quicklist(双端链表)和ziplist作为list底层实现

不采用普通链表原因:数据读取慢,内存碎片多,指针占用过多内存(胖内存)
可以通过设置每个ziplist的最大容量,quicklist的数据压缩范围,提升数据存取效率
分布式常用数据结构
微博/微信公号消息流
推:公号推流,用户队列访问压力小,维护成本高,在大量关注公号情况下推送量大
李四发微博,消息ID为10086LPUSH msg:{张三-ID} 10086
王五发微博,消息ID为10010 LPUSH msg:{王五-ID} 10010
查看最新微博消息LRANGE msg:{王五-ID} 0 4
拉:拉取公号队列,单点访问压力高存在上限,维护成本低,在大量关注公号情况下,同时访问人过多容易导致redis宕机