--- acl_categories: - '@write' - '@hash' - '@fast' arguments: - display_text: key key_spec_index: 0 name: key type: key - arguments: - display_text: fnx name: fnx token: FNX type: pure-token - display_text: fxx name: fxx token: FXX type: pure-token name: condition optional: true type: oneof - arguments: - display_text: seconds name: seconds token: EX type: integer - display_text: milliseconds name: milliseconds token: PX type: integer - display_text: unix-time-seconds name: unix-time-seconds token: EXAT type: unix-time - display_text: unix-time-milliseconds name: unix-time-milliseconds token: PXAT type: unix-time - display_text: keepttl name: keepttl token: KEEPTTL type: pure-token name: expiration optional: true type: oneof - arguments: - display_text: numfields name: numfields type: integer - arguments: - display_text: field name: field type: string - display_text: value name: value type: string multiple: true name: data type: block 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 fields being set. description: Set the value of one or more fields of a given hash key, and optionally set their expiration. 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: HSETEX railroad_diagram: /images/railroad/hsetex.svg since: 8.0.0 summary: Set the value of one or more fields of a given hash key, and optionally set their expiration. syntax_fmt: "HSETEX key [FNX | FXX] [EX\_seconds | PX\_milliseconds |\n EXAT\_unix-time-seconds\ \ | PXAT\_unix-time-milliseconds | KEEPTTL]\n FIELDS\_numfields field value [field\ \ value ...]" title: HSETEX --- Set the value of one or more fields of a given hash key and optionally set their expiration time or time-to-live (TTL). If the given key already holds a value, it is overwritten and any previous TTLs associated with the key are discarded. ## Options The `HSETEX` command supports a set of options: * `FNX` -- Only set the fields if none of them already exist. * `FXX` -- Only set the fields if all of them already exist. * `EX seconds` -- Set the specified expiration time in seconds. * `PX milliseconds` -- Set the specified expiration time in milliseconds. * `EXAT unix-time-seconds` -- Set the specified Unix time in seconds at which the fields will expire. * `PXAT unix-time-milliseconds` -- Set the specified Unix time in milliseconds at which the fields will expire. * `KEEPTTL` -- Retain the TTL associated with the fields. The `EX`, `PX`, `EXAT`, `PXAT`, and `KEEPTTL` options are mutually exclusive. ## Example ``` redis> HSETEX mykey EXAT 1740470400 FIELDS 2 field1 "Hello" field2 "World" (integer) 1 redis> HTTL mykey FIELDS 2 field1 field2 1) (integer) 55627 2) (integer) 55627 redis> HSETEX mykey FNX EX 60 FIELDS 2 field1 "Hello" field2 "World" (integer) 0 redis> HSETEX mykey FXX EX 60 KEEPTTL FIELDS 2 field1 "hello" field2 "world" (error) ERR Only one of EX, PX, EXAT, PXAT or KEEPTTL arguments can be specified redis> HSETEX mykey FXX KEEPTTL FIELDS 2 field1 "hello" field2 "world" (integer) 1 redis> HTTL mykey FIELDS 2 field1 field2 1) (integer) 55481 2) (integer) 55481 ``` ## Redis Software and Redis Cloud compatibility | Redis
Software | Redis
Cloud | Notes | |:----------------------|:-----------------|:------| | ✅ Standard
✅ Active-Active | ✅ Standard
✅ Active-Active | | ## Return information {{< multitabs id="hsetex-return-info" tab1="RESP2" tab2="RESP3" >}} One of the following: * [Integer reply](../../develop/reference/protocol-spec#integers): `0` if no fields were set. * [Integer reply](../../develop/reference/protocol-spec#integers): `1` if all the fields wereset. -tab-sep- One of the following: * [Integer reply](../../develop/reference/protocol-spec#integers): `0` if no fields were set. * [Integer reply](../../develop/reference/protocol-spec#integers): `1` if all the fields wereset. {{< /multitabs >}}