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 文档许可。