列表类型list可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。
列表类型内部使用双向链表实现,所以向列表两端添加元素的时间复杂度为O(1),获取越接近两端的元素速度就越快。
不过使用链表的代价就是通过索引访问元素比较慢。
这种数据结构使得列表类型能非常快速地完成关系数据库难以应付的场景:如社交网站的新鲜事,我们关心的只是最新的内容,使用列表类型存储,即使新鲜事的总数达到几千万,获取最新的100条数据也是极快的。同样因为在两端插入记录的时间复杂度是O(1),列表类型也适合用来记录日志,可以保证加入新日志的速度不会受到已有日志数量的影响。
一个列表类型键最多能容纳(2^32-1)个元素。
命令 | 举例 | 说明 |
LPUSH key value [value ... ] , RPUSH key value [value ... ] | ![]() | 向列表两端增加元素 |
LPOP key,RPOP key | ![]() | 从列表两端弹出元素 |
LLEN key | ![]() | 获取列表中元素的个数 |
LRANGE key start stop | ![]() | 获得列表片段 |
LREM key count value | ![]() | 删除列表中指定的值 |
LINDEX key index , LSET key index value | ![]() | 获得/设置指定索引的元素值 |
LTRIM key start end | ![]() | 只保留列表指定片段 |
LINSERT key BEFORE|AFTER pivot value | ![]() | 向列表中插入元素 |