--- acl_categories: - '@write' - '@hash' - '@fast' arguments: - display_text: key key_spec_index: 0 name: key type: key - display_text: unix-time-milliseconds name: unix-time-milliseconds type: unix-time - 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 an absolute Unix timestamp (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: HPEXPIREAT railroad_diagram: /images/railroad/hpexpireat.svg since: 7.4.0 summary: Set expiry for hash field using an absolute Unix timestamp (milliseconds) syntax_fmt: "HPEXPIREAT key unix-time-milliseconds [NX | XX | GT | LT]\n FIELDS\_\ numfields field [field ...]" title: HPEXPIREAT --- `HPEXPIREAT` has the same effect and semantics as [`HEXPIREAT`]({{< relref "/commands/hexpireat" >}}), but the Unix time at which the field will expire is specified in milliseconds since Unix epoch instead of seconds. ## Options The `HPEXPIREAT` command supports a set of options: * `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 current one. * `LT` -- For each specified field, set expiration only when the new expiration is less than current one. A non-volatile key is treated as an infinite TTL for the purposes of `GT` and `LT`. The `NX`, `XX`, `GT`, and `LT` options are mutually exclusive. ## Example ``` redis> HSET mykey field1 "hello" field2 "world" (integer) 2 redis> HPEXPIREAT mykey 1715704971000 FIELDS 2 field1 field2 1) (integer) 1 2) (integer) 1 redis> HPTTL mykey FIELDS 2 field1 field2 1) (integer) 303340 2) (integer) 303340 ``` ## Redis Software and Redis Cloud compatibility | Redis
Software | Redis
Cloud | Notes | |:----------------------|:-----------------|:------| | ✅ Standard
✅ Active-Active | ✅ Standard
✅ Active-Active | | ## Return information {{< multitabs id="hpexpireat-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 >}}