列表(List)

Redis 的列表是一种线性的有序结构,它可以按照元素被推入到列表中的顺序来储存元素,这些元素既可以是文字数据,又可以是二进制数据,并且列表中的元素可以出现重复。

作为例子,图 4-1 展示了一个包含多个字符串的列表,这个列表按照从左到右的方式,依次储存了 "one""two""three""four" 四个元素。


图 4-1 横向表示的列表 _images/IMAGE_GRAPH_LIST.jpeg


为了展示方便,本书给出的列表图片一般都会像图 4-1 那样只展示列表本身而忽略列表的键名,但是在有需要的时候,本书也会像图 4-2 那样,将列表及其键名一并给出。


图 4-2 完整的列表键视图 _images/IMAGE_LIST_WITH_KEY.jpeg


Redis 为列表提供了丰富的操作命令,通过这些命令,用户可以:

  • 将新元素推入到列表的左端或者右端;

  • 移除位于列表最左端或者最右端的元素;

  • 移除列表最右端的元素,然后把被移除的元素推入到另一个列表的左端;

  • 获取列表包含的元素数量;

  • 获取列表在指定索引上的单个元素,又或者获取列表在指定索引范围内的多个元素;

  • 为列表的指定索引设置新元素,或者把新元素添加到某个指定元素的前面或者后面;

  • 对列表进行修剪,只保留指定索引范围内的元素;

  • 从列表里面移除指定元素;

  • 执行能够阻塞客户端的推入和移除操作;

本章接下来将对以上提到的各个列表操作命令进行介绍,并说明如何使用这些命令去构建各种实用的程序。