*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 的顺序返回对应数组。