Returns one or more random fields from a hash.
HRANDFIELD
key [count [WITHVALUES
]]
When called with just the key
argument, return a random field from the hash value stored at key
.
If the provided count
argument is positive, return an array of distinct fields. The array’s length is either count
or the hash’s number of fields (HLEN
), whichever is lower.
If called with a negative count
, the behavior changes and the command is allowed to return the same field multiple times. In this case, the number of returned fields is the absolute value of the specified count
.
The optional WITHVALUES
modifier changes the reply so it includes the respective values of the randomly selected hash fields.
Any of the following:
Nil reply: if the key doesn’t exist
Bulk string reply: a single, randomly selected field when the count
option is not used
Array reply: a list containing count
fields when the count
option is used, or an empty array if the key does not exists.
Array reply: a list of fields and their values when count
and WITHVALUES
were both used.
Any of the following:
Null reply: if the key doesn’t exist
Bulk string reply: a single, randomly selected field when the count
option is not used
Array reply: a list containing count
fields when the count
option is used, or an empty array if the key does not exists.
Array reply: a list of fields and their values when count
and WITHVALUES
were both used.
O(N) where N is the number of fields returned
@hash @read @slow
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"
When the count
argument is a positive value this command behaves as follows:
count
is bigger than the number of fields in the hash, the command will only return the whole hash without additional fields.When the count
is a negative value, the behavior changes as follows:
count
fields, or an empty array if the hash is empty (non-existing key), are always returned.HDEL, HEXISTS, HGET, HGETALL, HINCRBY, HINCRBYFLOAT, HKEYS, HLEN, HMGET, HSCAN, HSET, HSETNX, HSTRLEN, HVALS.