1. 基础概念
Redis 的 列表 允许 用户 从 序列 的 两端 推入 或者 弹出 元素, 获取 列表 元素, 以及 执行 各种 常见 的 列表 操作。
2. 适用场景
列表 可以 用来 存储 任务 信息、 最近 浏览 过 的 文章 或者 常用 联系人 信息。
3. 常用命令
- RPUSH RPUSH key- name value [value ...]—— 将 一个 或 多个 值 推入 列表 的 右端
- LPUSH LPUSH key- name value [value ...]—— 将 一个 或 多个 值 推入 列表 的 左端
- RPOP RPOP key- name—— 移 除 并 返回 列表 最 右端 的 元素
- LPOP LPOP key- name—— 移 除 并 返回 列表 最 左端 的 元素
- LINDEX LINDEX key- name offset—— 返回 列表 中 偏移量 为 offset 的 元素
- LRANGE LRANGE key- name start end—— 返回 列表 从 start 偏移量 到 end 偏移量 范围内 的 所有 元素, 其中 偏移量 为 start 和 偏移量 为 end 的 元素 也会 包含 在被 返回 的 元素 之内
- LTRIM LTRIM key- name start end—— 对列 表 进行 修剪, 只 保留 从 start 偏移量 到 end 偏移量 范围内 的 元素, 其中 偏移量 为 start 和 偏移量 为 end 的 元素 也会 被 保留
4. 阻塞 式 的 列表 弹出 命令 以及 在 列表 之间 移动 元素 的 命令
描述:有几个 列表 命令 可以 将 元素 从 一个 列表 移动 到 另一个 列表, 或者 阻塞( block) 执行 命令 的 客户 端 直到 有其 他 客户 端 给 列表 添加 元素 为止, 这些 命令 在 第 1 章 都没 有 介绍 过, 表 3- 4 列出 了 这些 阻塞 弹出 命令 和 元素 移动 命令。
-
BLPOP BLPOP key- name [key- name ...] timeout—— 从 第一个 非 空 列表 中弹 出 位于 最 左端 的 元素, 或者 在 timeout 秒 之内 阻塞 并 等待 可 弹出 的 元素 出现
-
BRPOP BRPOP key- name [key- name ...] timeout—— 从 第一个 非 空 列表 中弹 出 位于 最 右端 的 元素, 或者 在 timeout 秒 之内 阻塞 并 等待 可 弹出 的 元素 出现
-
RPOPLPUSH RPOPLPUSH source- key dest- key—— 从 source- key 列表 中弹 出 位于 最 右端 的 元素, 然后 将 这个 元素 推入 dest- key 列表 的 最 左端, 并向 用户 返回 这个 元素
-
BRPOPLPUSH BRPOPLPUSH source- key dest- key timeout—— 从 source- key 列表 中弹 出 位于 最 右端 的 元素, 然后 将 这个 元素 推入 dest- key 列表 的 最 左端, 并向 用户 返回 这个 元素; 如果 source- key 为 空, 那么 在 timeout 秒 之内 阻塞 并 等待 可 弹出 的 元素 出现
列表 的 一个 主要 优点 在于 它可 以 包含 多个 字符串 值, 这使 得用 户 可以 将 数据 集中 在 同一个 地方。