HRANDFIELD
语法
HRANDFIELD key [count [WITHVALUES]]
- 可用版本
- Redis Open Source 6.2.0
- 时间复杂度
- O(N),其中 N 是返回的字段数量
- ACL 类别
-
@read
,@hash
,@slow
,
当仅使用 `key` 参数调用时,返回存储在 `key` 处的哈希值中的一个随机字段。
如果提供的 `count` 参数为正数,则返回一个包含不同字段的数组。数组的长度为 `count` 或哈希中的字段数量 (HLEN
),取两者中较小者。
如果使用负数的 `count` 调用,行为会改变,命令可以返回同一字段多次。在这种情况下,返回的字段数量是指定 `count` 的绝对值。
可选的 `WITHVALUES` 修饰符会改变回复,使其包含随机选择的哈希字段的相应值。
示例
传递 count 参数时的行为说明
当 `count` 参数为正数时,此命令的行为如下:
- 不返回重复字段。
- 如果 `count` 大于哈希中的字段数量,命令将仅返回整个哈希,而不返回额外字段。
- 回复中字段的顺序并非完全随机,因此如果需要,客户端需要对其进行洗牌。
当 `count` 为负数时,行为变化如下:
- 允许返回重复字段。
- 总是返回精确的 `count` 个字段,如果哈希为空(不存在的键),则返回空数组。
- 回复中字段的顺序是完全随机的。
RESP2 回复
以下任意一种
- Nil 回复:如果键不存在
- Bulk string 回复:未使用 `count` 选项时,一个随机选择的单个字段
- Array 回复:使用 `count` 选项时,一个包含 `count` 个字段的列表;如果键不存在,则为空数组。
- Array 回复:当 `count` 和 `WITHVALUES` 都使用时,一个包含字段及其值的列表。
RESP3 回复
以下任意一种
- Null 回复:如果键不存在
- Bulk string 回复:未使用 `count` 选项时,一个随机选择的单个字段
- Array 回复:使用 `count` 选项时,一个包含 `count` 个字段的列表;如果键不存在,则为空数组。
- Array 回复:当 `count` 和 `WITHVALUES` 都使用时,一个包含字段及其值的列表。