VRANDMEMBER

语法
VRANDMEMBER key [count]
可用版本
Redis Open Source 8.0.0
时间复杂度
O(N),其中 N 是 count 参数的绝对值。

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

其行为类似于 SRANDMEMBER 命令

  • 当不带 count 参数调用时,返回单个元素作为批量字符串。
  • 当带正数 count 调用时,最多返回指定数量的不同元素(无重复)。
  • 当带负数 count 调用时,返回指定数量的元素,可能包含重复。
  • 如果 count 超出了元素的数量,则返回整个集合。
  • 如果键不存在,且未指定 count,则命令返回 null;如果指定了 count,则返回空数组。
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"

当键不存在时

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

此命令适用于

  • 对元素进行采样以用于测试或训练。
  • 生成随机查询以进行性能测试。

内部实现

  • 对于较小的 count(小于集合大小的 20%),使用字典来确保唯一性。
  • 对于较大的 count(大于集合大小的 20%),线性扫描提供更快的性能,尽管结果可能随机性较低。

必需参数

key

是存储向量集合的键名。

可选参数

count

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

RESP2 回复

以下之一

  • 数组回复,包含 count 个随机元素名称的字符串
  • 批量字符串回复(空批量字符串),用于未知键。
  • 数组回复(空数组),用于指定了 count 的未知键。

RESP3 回复

以下之一

  • 数组回复,包含 count 个随机元素名称的字符串
  • 空回复,用于未知键。
  • 数组回复(空数组),用于指定了 count 的未知键。

评价此页面
返回顶部 ↑