定义
双向链表
首尾操作(删除和增加):时间复杂度O(1)
查找中间元素:时间复杂度为O(n)
数据压缩(gzip压缩)
存储结构
命令
- LPUSH
- LPUSHX
- RPUSH
- RPUSHX
- LPOP
- RPOP
- RPOPLPUSH
- LREM
- LLEN
- LINDEX
- LINSERT
- LSET
- LRANGE
- LTRIM
- BLPOP
- BRPOP
- BRPOPLPUSH
应用
1. 栈(先进后出FILO)
LPUSH+LPOP
RPUSH+RPOP2. 队列(先进先出FIFO)
LPUSH+RPOP
RPUSH+LPOP3. 阻塞队列(blocking queue)
仅阻塞当前连接
LPUSH+BRPOP
RPUSH+BLPOP4. 异步消息队列
操作与队列一样,但是在不同系统间
5. 固定窗口(最近多少条记录)
面试
- 实际项目中如何保证多条记录操作的原子性?即要么同时多条记录操作成功,要么全部失败
使用Lua脚本或使用pipeline命令