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 回复
以下之一
RESP3 回复
以下之一