--- acl_categories: - '@keyspace' - '@write' - '@fast' arguments: - display_text: key key_spec_index: 0 name: key type: key - display_text: newkey key_spec_index: 1 name: newkey type: key arity: 3 categories: - docs - develop - stack - oss - rs - rc - oss - kubernetes - clients command_flags: - write - fast complexity: O(1) description: Renames a key only when the target key name doesn't exist. group: generic hidden: false history: - - 3.2.0 - The command no longer returns an error when source and destination names are the same. key_specs: - RW: true access: true begin_search: spec: index: 1 type: index delete: true find_keys: spec: keystep: 1 lastkey: 0 limit: 0 type: range - OW: true begin_search: spec: index: 2 type: index find_keys: spec: keystep: 1 lastkey: 0 limit: 0 type: range insert: true linkTitle: RENAMENX railroad_diagram: /images/railroad/renamenx.svg since: 1.0.0 summary: Renames a key only when the target key name doesn't exist. syntax_fmt: RENAMENX key newkey title: RENAMENX --- {{< note >}} This command's behavior varies in clustered Redis environments. See the [multi-key operations]({{< relref "/develop/using-commands/multi-key-operations" >}}) page for more information. {{< /note >}} Renames `key` to `newkey` if `newkey` does not yet exist. It returns an error when `key` does not exist. In Cluster mode, both `key` and `newkey` must be in the same **hash slot**, meaning that in practice only keys that have the same hash tag can be reliably renamed in cluster. ## Examples {{% redis-cli %}} SET mykey "Hello" SET myotherkey "World" RENAMENX mykey myotherkey GET myotherkey {{% /redis-cli %}} ## Redis Software and Redis Cloud compatibility | Redis
Software | Redis
Cloud | Notes | |:----------------------|:-----------------|:------| | ✅ Standard
✅ Active-Active | ✅ Standard
✅ Active-Active | For Active-Active or clustered databases, the original key and new key must be in the same hash slot. | ## Return information {{< multitabs id="renamenx-return-info" tab1="RESP2" tab2="RESP3" >}} One of the following: * [Integer reply](../../develop/reference/protocol-spec#integers): `1` if _key_ was renamed to _newkey_. * [Integer reply](../../develop/reference/protocol-spec#integers): `0` if _newkey_ already exists. -tab-sep- One of the following: * [Integer reply](../../develop/reference/protocol-spec#integers): `1` if _key_ was renamed to _newkey_. * [Integer reply](../../develop/reference/protocol-spec#integers): `0` if _newkey_ already exists. {{< /multitabs >}}