2.8列表

特点 重要api 实战 查缺补漏

列表结构

后期补充列表结构图

特点

  • 有序

  • 可以重复

  • 左右两边插入弹出

常用命令

命令

说明

时间复杂度

rpush key value1 value2 ...valueN

从列表的右端插入值(1~N个)

O(1~N)

lpush key value1 value2 ... valueN

从列表的左端插入值(1~N个)

O(1~N)

linsert key before|after value newValue

在list指定的值前|后插入new Value

O(n)

命令

说明

时间复杂度

lpop key

从列表左边弹出一个item

O(1)

rpop

从列表右边弹出一个item

O(1)

lrem key count value

根据count值,从列表中删除所有value相等的项 (1)count>0,从左到右,删除最多count个值为value的项 (2)count(3)count=0,删除所有值为value的项

O(n)

ltrim key start end

按照索引范围{start,end}修剪列表

O(n)

命令

说明

时间复杂度

lrange key start end

获取列表指定索引范围{start,end}的item

O(n)

lindex key index

获取列表指定索引的item

O(1)

llen key

获取列表长度

O(1)

命令

说明

时间复杂度

lset key index newValue

设置列表指定索引值为newValue

O (n)

其他

命令

说明

时间复杂度

blpop key timeout

lpop阻塞版本,timeout是阻塞超时时间,timeout=0为永远不阻塞

O(1)

brpop key timeout

rpop阻塞版本,timeout是阻塞超时时间,timeout=0为永远不阻塞

O(1)

TIPS-使用列表实现其他数据结构

  1. LRUSH + LPOP = Stack

  2. LPUSH + RPOP = Queue

  3. LPUSH + LTRIM =Capped Collection

  4. LPUSH + BRPOP = Message Queue

Last updated

Was this helpful?