*Redis VRANDMEMBER 命令

VRANDMEMBER 用于从向量集合中随机返回一个或多个向量 ID。


*语法

VRANDMEMBER key [count]

*参数说明

参数 类型 必填 说明
key String 向量集合的键名
count Integer 返回的随机向量数量(默认 1)

*返回值

  • String:单个随机向量 ID(未指定 count 或 count 为 1)
  • Array:多个随机向量 ID 列表(count > 1)
  • Nil:键不存在或集合为空
  • Error:键对应的值不是向量集合类型

*时间复杂度

O(k),其中 k 为返回数量


*示例

*基本用法

> VADD items item1 [0.1, 0.2]
1
> VADD items item2 [0.3, 0.4]
1
> VADD items item3 [0.5, 0.6]
1
> VRANDMEMBER items
"item2"

*返回多个随机向量

> VRANDMEMBER items 2
1) "item1"
2) "item3"

*键不存在

> VRANDMEMBER empty_key
(nil)

*常见错误

错误 原因 解决
ERR wrong number of arguments 缺少 key 参数 补充 key
ERR count is not a valid integer count 不是整数 检查 count 格式
WRONGTYPE Operation against a key holding the wrong kind of value key 不是向量集合 确认 key 类型正确

*最佳实践

  • 场景:随机抽样、A/B 测试、数据探索、负样本采样
  • count 为正数时返回不重复 ID,负数时允许重复
  • 大规模集合中随机采样可用于构建训练数据集

*FAQ

Q1: VRANDMEMBER 和 SRANDMEMBER 有什么区别? A: VRANDMEMBER 用于向量集合,SRANDMEMBER 用于 Redis Set 类型。

Q2: 返回的 ID 是否可能重复? A: count 为正数时不重复;count 为负数时可能重复,绝对值表示返回数量。

Q3: 键不存在时返回什么? A: 返回 nil。