List其实就是一个每个子元素都是String类型的双向链表,所以List既可以作为队列,也可以做栈。
- 重要的方法
- lpush | rpush
- lpop | rpop
- lrange
- llen
- lindex
- API
- lpush key value
向key头部添加一个元素value - lpushx key value
类似于lpush,区别是,如果key不存在就什么都不做 - rpush key value
向key尾部添加一个元素value - linsert key before|after pivot value
在key中的pivot之前或者之后插入一个value
如果pivot不存在,就什么都不做,返回-1 - lset key position value
设置位置position为value,下标从0开始,如果position超过最大下标,报错 - lrem key count value
如果count为正数,从头部开始,删除count个value
如果count为0,删除所有的value
如果count为负数,从尾部开始,删除|count|个value - ltrim key start end
修剪key,只保留从start到end下标的数,下标从0开始
start,end为正数时,从头部开始数
start,end为负数时,表示倒数第几个,如:-1表示倒数第一个 - lpop key
从key中的头部弹出一个value,即队列中的出队
如果key中没有值,返回空 - rpop key
从key中的尾部弹出一个value,即栈中的出栈 - rpoplpush key1 key2
从key1中队尾出栈一个value,塞进key2的头部
这个操作是原子的,即key1不存在或者为空,或key2不为队列都返回nil,什么都不做 - lindex key index
获取key下标index的值 - llen key
获取key中元素的个数,即key的长度 - lrange key start end
获取key从start到end的所有元素,
start,end为负数时,表示倒数
lrange key 0 -1可以获取所有的元素
- lpush key value
- 常见场景:
- 可用于任务队列或者任务堆栈使用
- 可用于列表分页使用(通过lrange pageperpage (page+1)perpage-1)