*Redis ARMGET 命令

ARMGET 从多个数组中批量获取元素。


*语法

ARMGET key [key ...]

*参数说明

参数 类型 必填 说明
key String 数组键名,支持多个

*返回值

  • Array of Arrays:每个 key 对应的数组元素列表,按传入顺序排列
    • 空数组表示该 key 对应的数组为空
    • nil 表示该 key 不存在
  • Error:任一 key 不是 Array 类型时返回 WRONGTYPE

*时间复杂度

O(N),N 为所有数组元素总数之和。


*示例

*批量获取多个数组

> ARSET colors "red" "green"
OK
> ARSET sizes "S" "M" "L"
OK
> ARMGET colors sizes
1) 1) "red"
   2) "green"
2) 1) "S"
   2) "M"
   3) "L"

*包含不存在的 key

> ARMGET colors notexist sizes
1) 1) "red"
   2) "green"
2) (nil)
3) 1) "S"
   2) "M"
   3) "L"

*空数组

> ARSET empty
OK
> ARMGET empty colors
1) (empty array)
2) 1) "red"
   2) "green"

*常见错误

错误 原因 解决
WRONGTYPE 某个 key 不是 Array 类型 确认所有 key 的数据类型一致
ERR wrong number of arguments 未提供 key 至少提供一个 key

*最佳实践

  • 批量读取替代多次 ARGET,减少网络往返
  • 注意总数据量,过大时拆分为多次 ARMGET
  • 结合 Pipeline 使用可进一步提升吞吐量

*FAQ

Q1: ARMGET 和多次 ARGET 的区别? A: ARMGET 单次往返获取多个数组,网络开销更小;多次 ARGET 需要多次往返。

Q2: 某个 key 不存在会影响其他 key 吗? A: 不会,不存在的 key 返回 nil,其他 key 正常返回。

Q3: 返回顺序和传入顺序一致吗? A: 是的,严格按传入 key 的顺序返回对应数组。