HRANDFIELD

从哈希中返回一个或多个随机字段。

语法

HRANDFIELD key [count [WITHVALUES]]

引入版本:6.2.0

复杂度摘要:O(N)

当仅使用 key 参数调用时,从存储在 key 的哈希值中返回一个随机字段。

如果提供的 count 参数为正,则返回 不同领域 数组。数组的长度是 count 或哈希的字段数 (HLEN),以较小者为准。

如果使用负 count 进行调用,则行为会发生变化,并且允许命令返回 同一字段多次。在这种情况下,返回字段的数量是指定count的绝对值。

可选的 WITHVALUES 修饰符更改回复,使其包含随机选择的哈希字段的相应值。

必需参数

key

保存哈希值的键的名称。

可选参数

count

要返回的字段数。正 count 返回最多多个不同字段;负 count 恰好返回 |count| 字段,并且可能会重复字段。省略时,返回单个随机字段。

WITHVALUES

同时返回每个选定字段的值。只能与 count 一起使用。

示例

redis> HSET coin heads obverse tails reverse edge null
(integer) 3
redis> HRANDFIELD coin
redis> HRANDFIELD coin
redis> HRANDFIELD coin -5 WITHVALUES

计数通过时的行为规范

当 count 参数为正值时,该命令的行为如下:

  • 不返回重复字段。
  • 如果 count 大于哈希中的字段数,则该命令将仅返回整个哈希,而不返回其他字段。
  • 回复中字段的顺序并不是真正随机的,因此客户端可以根据需要对它们进行打乱顺序。

当 count 为负值时,行为发生如下变化:

  • 可以重复字段。
  • 始终返回 count 字段,或者如果哈希为空(不存在的键)则返回空数组。
  • 回复中字段的顺序是真正随机的。

Redis Software 与 Redis Cloud 兼容性

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

返回值

RESP2

以下任意一项: * 无回复:如果键不存在 * 批量字符串回复:未使用 count 选项时,随机选择的单个字段 * 数组回复:使用 count 选项时,包含 count 字段的列表;如果键不存在,则为空数组。 * 数组回复:同时使用 count 和 WITHVALUES 时的字段及其值的列表。

RESP3

以下任意一项: * 空回复:如果键不存在 * 批量字符串回复:未使用 count 选项时,随机选择的单个字段 * 数组回复:使用 count 选项时,包含 count 字段的列表;如果键不存在,则为空数组。 * 数组回复:同时使用 count 和 WITHVALUES 时的字段及其值的列表。

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