--- acl_categories: - '@write' - '@hash' - '@fast' arguments: - display_text: key key_spec_index: 0 name: key type: key - display_text: milliseconds name: milliseconds type: integer - arguments: - display_text: nx name: nx token: NX type: pure-token - display_text: xx name: xx token: XX type: pure-token - display_text: gt name: gt token: GT type: pure-token - display_text: lt name: lt token: LT type: pure-token name: condition optional: true type: oneof - arguments: - display_text: numfields name: numfields type: integer - display_text: field multiple: true name: field type: string name: fields token: FIELDS type: block arity: -6 categories: - docs - develop - stack - oss - rs - rc - oss - kubernetes - clients command_flags: - write - denyoom - fast complexity: O(N) where N is the number of specified fields description: Set expiration for hash fields using relative time to expire (milliseconds) group: hash hidden: false key_specs: - RW: true begin_search: spec: index: 1 type: index find_keys: spec: keystep: 1 lastkey: 0 limit: 0 type: range update: true linkTitle: HPEXPIRE railroad_diagram: /images/railroad/hpexpire.svg since: 7.4.0 summary: Set expiry for hash field using relative time to expire (milliseconds) syntax_fmt: "HPEXPIRE key milliseconds [NX | XX | GT | LT] FIELDS\_numfields field\n\ \ [field ...]" title: HPEXPIRE --- This command works like [`HEXPIRE`](/content/commands/hexpire.md), but the expiration of a field is specified in milliseconds instead of seconds. ## Required arguments
key The name of the key that holds the hash.
milliseconds The timeout, in milliseconds.
FIELDS numfields field [field ...] The hash fields to operate on. `numfields` is the number of fields, followed by that many field names.
## Optional arguments The following options modify the command's behavior. They are mutually exclusive.
NX For each specified field, set expiration only when the field has no expiration.
XX For each specified field, set expiration only when the field has an existing expiration.
GT For each specified field, set expiration only when the new expiration is greater than the current one. A non-volatile key is treated as an infinite TTL for the purposes of `GT`.
LT For each specified field, set expiration only when the new expiration is less than the current one. A non-volatile key is treated as an infinite TTL for the purposes of `LT`.
## Examples ``` redis> HSET mykey field1 "hello" field2 "world" (integer) 2 redis> HPEXPIRE mykey 2000 FIELDS 2 field1 field2 1) (integer) 1 2) (integer) 1 redis> HGETALL mykey (empty array) ``` ## Redis Software and Redis Cloud compatibility | Redis
Software | Redis
Cloud | Notes | |:----------------------|:-----------------|:------| | ✅ Standard
✅ Active-Active | ✅ Standard
✅ Active-Active | | ## Return information {{< multitabs id="hpexpire-return-info" tab1="RESP2" tab2="RESP3" >}} One of the following: * [Array reply](../../develop/reference/protocol-spec#arrays). For each field: - [Integer reply](../../develop/reference/protocol-spec#integers): `-2` if no such field exists in the provided hash key, or the provided key does not exist. - [Integer reply](../../develop/reference/protocol-spec#integers): `0` if the specified NX, XX, GT, or LT condition has not been met. - [Integer reply](../../develop/reference/protocol-spec#integers): `1` if the expiration time was set/updated. - [Integer reply](../../develop/reference/protocol-spec#integers): `2` when `HEXPIRE` or `HPEXPIRE` is called with 0 seconds or milliseconds, or when `HEXPIREAT` or `HPEXPIREAT` is called with a past Unix time in seconds or milliseconds. * [Simple error reply](../../develop/reference/protocol-spec#simple-errors): - if parsing failed, mandatory arguments are missing, unknown arguments are specified, or argument values are of the wrong type or out of range. - if the provided key exists but is not a hash. -tab-sep- One of the following: * [Array reply](../../develop/reference/protocol-spec#arrays). For each field: - [Integer reply](../../develop/reference/protocol-spec#integers): `-2` if no such field exists in the provided hash key, or the provided key does not exist. - [Integer reply](../../develop/reference/protocol-spec#integers): `0` if the specified NX, XX, GT, or LT condition has not been met. - [Integer reply](../../develop/reference/protocol-spec#integers): `1` if the expiration time was set/updated. - [Integer reply](../../develop/reference/protocol-spec#integers): `2` when `HEXPIRE` or `HPEXPIRE` is called with 0 seconds or milliseconds, or when `HEXPIREAT` or `HPEXPIREAT` is called with a past Unix time in seconds or milliseconds. * [Simple error reply](../../develop/reference/protocol-spec#simple-errors): - if parsing failed, mandatory arguments are missing, unknown arguments are specified, or argument values are of the wrong type or out of range. - if the provided key exists but is not a hash. {{< /multitabs >}}