HRANDFIELD

用法
HRANDFIELD key [ count [ WITHVALUES ] ]
复杂度
O(N),其中 N 是返回的字段数量
6.2.0
ACL 类别
@hash, @read, @slow

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

如果提供的 count 参数为正数,则返回一个包含不同字段的数组。数组的长度是 count 或哈希的字段数量 (HLEN) 中较小的一个。

如果使用负数 count 调用,行为会改变,命令允许返回相同的字段多次。在这种情况下,返回的字段数量是指定的 count 的绝对值。

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

示例

127.0.0.1:6379> HSET coin heads obverse tails reverse edge null
(integer) 3
127.0.0.1:6379> HRANDFIELD coin
"heads"
127.0.0.1:6379> HRANDFIELD coin
"heads"
127.0.0.1:6379> HRANDFIELD coin -5 WITHVALUES
 1) "heads"
 2) "obverse"
 3) "tails"
 4) "reverse"
 5) "edge"
 6) "null"
 7) "heads"
 8) "obverse"
 9) "edge"
10) "null"

传递 count 参数时的行为规范

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

  • 不返回重复字段。
  • 如果 count 大于哈希中的字段数量,命令将只返回整个哈希,而不会返回额外字段。
  • 回复中字段的顺序并非真正随机,因此如果需要,客户端应负责对其进行洗牌。

count 为负值时,行为改变如下:

  • 允许出现重复字段。
  • 始终返回精确的 count 个字段,如果哈希为空(键不存在),则返回一个空数组。
  • 回复中字段的顺序是真正随机的。

RESP2 回复

以下任意一种

  • Nil 回复:如果键不存在

  • Bulk 字符串回复:当未使用 count 选项时,返回一个随机选定的字段

  • 数组回复:当使用 count 选项时,返回包含 count 个字段的列表;如果键不存在,则返回一个空数组。

  • 数组回复:当同时使用 countWITHVALUES 时,返回字段及其值的列表。

RESP3 回复

以下任意一种

  • Null 回复:如果键不存在

  • Bulk 字符串回复:当未使用 count 选项时,返回一个随机选定的字段

  • 数组回复:当使用 count 选项时,返回包含 count 个字段的列表;如果键不存在,则返回一个空数组。

  • 数组回复:当同时使用 countWITHVALUES 时,返回字段及其值的列表。