VRANDMEMBER

从向量集中返回一个或多个随机成员

语法

VRANDMEMBER key [count]

引入版本:8.0.0

复杂度摘要:O(N)

从向量集中返回一个或多个随机元素。

行为类似于 SRANDMEMBER 命令:

  • 在不进行计数的情况下调用时,以批量字符串形式返回单个元素。
  • 当使用正计数调用时,返回最多多个不同元素(无重复)。
  • 当使用负计数调用时,返回那么多元素,可能有重复项。
  • 如果计数超过元素数量,则返回整个集合。
  • 如果键不存在,则如果未给出计数,则该命令将返回 null;如果提供了计数,则返回空数组。
VADD vset VALUES 3 1 0 0 elem1
VADD vset VALUES 3 0 1 0 elem2
VADD vset VALUES 3 0 0 1 elem3

返回单个随机元素:

VRANDMEMBER vset
"elem2"

返回两个不同的随机元素:

VRANDMEMBER vset 2
1) "elem1"
2) "elem3"

返回 3 个可能重复的随机元素:

VRANDMEMBER vset -3
1) "elem2"
2) "elem2"
3) "elem1"

请求比集合中存在的元素更多的元素:

VRANDMEMBER vset 10
1) "elem1"
2) "elem2"
3) "elem3"

当key不存在时:

VRANDMEMBER nonexistent
(nil)
VRANDMEMBER nonexistent 3
(empty array)

该命令适用于:

  • 用于测试或培训的采样要素。
  • 生成随机查询以进行性能测试。

内部:

  • 对于小计数(小于集合大小的 20%),使用字典来确保唯一性。
  • 对于大量计数(超过设置大小的 20%),线性扫描可提供更快的性能,但结果可能不太随机。

必需参数

key

是保存向量集的键的名称。

可选参数

count

指定要返回的元素数量。正值返回不同的元素;负值允许重复。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
❌主动-主动
✅ 标准
❌主动-主动

返回值

RESP2

以下之一: * 数组回复 包含计数随机元素的名称,如 字符串。 * 未知键的 批量字符串回复(空批量字符串)。 * 指定计数时未知键的 数组回复(空数组)。

RESP3

以下之一: * 数组回复 包含 计数 随机元素的名称作为 字符串。 * 空回复 用于未知键。 * 指定计数时未知键的 数组回复(空数组)。

资料来源:Redis 官方 VRANDMEMBER 文档;中文内容参考 Redis 文档许可。