{
  "schema_version": 2,
  "id": "commands/cluster-meet",
  "title": "CLUSTER MEET",
  "url": "https://redis.io/docs/latest/commands/cluster-meet/",
  "summary": "Forces a node to handshake with another node.",
  "since": "3.0.0",
  "tags": [
    "docs",
    "develop",
    "stack",
    "oss",
    "rs",
    "rc",
    "oss",
    "kubernetes",
    "clients"
  ],
  "last_updated": "2026-09-18T09:48:21+01:00",
  "page_type": "content",
  "content_hash": "645e085786d320c6460ff5c12f5511836ddeb159f1da1a3c18f12448d52a5488",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "`CLUSTER MEET` is used in order to connect different Redis nodes with cluster\nsupport enabled, into a working cluster.\n\nThe basic idea is that nodes by default don't trust each other, and are\nconsidered unknown, so that it is unlikely that different cluster nodes will\nmix into a single one because of system administration errors or network\naddresses modifications.\n\nSo in order for a given node to accept another one into the list of nodes\ncomposing a Redis Cluster, there are only two ways:\n\n1. The system administrator sends a `CLUSTER MEET` command to force a node to meet another one.\n2. An already known node sends a list of nodes in the gossip section that we are not aware of. If the receiving node trusts the sending node as a known node, it will process the gossip section and send a handshake to the nodes that are still not known.\n\nNote that Redis Cluster needs to form a full mesh (each node is connected with each other node), but in order to create a cluster, there is no need to send all the `CLUSTER MEET` commands needed to form the full mesh. What matter is to send enough `CLUSTER MEET` messages so that each node can reach each other node through a *chain of known nodes*. Thanks to the exchange of gossip information in heartbeat packets, the missing links will be created.\n\nSo, if we link node A with node B via `CLUSTER MEET`, and B with C, A and C will find their ways to handshake and create a link.\n\nAnother example: if we imagine a cluster formed of the following four nodes called A, B, C and D, we may send just the following set of commands to A:\n\n1. `CLUSTER MEET B-ip B-port`\n2. `CLUSTER MEET C-ip C-port`\n3. `CLUSTER MEET D-ip D-port`\n\nAs a side effect of `A` knowing and being known by all the other nodes, it will send gossip sections in the heartbeat packets that will allow each other node to create a link with each other one, forming a full mesh in a matter of seconds, even if the cluster is large.\n\nMoreover `CLUSTER MEET` does not need to be reciprocal. If I send the command to A in order to join B, I don't need to also send it to B in order to join A.\n\nIf the optional `cluster_bus_port` argument is not provided, the default of client port number + 10,000 will be used."
    },
    {
      "id": "required-arguments",
      "title": "Required arguments",
      "role": "content",
      "text": "<details open><summary><code>ip</code></summary>\n\nThe IP address of the node to add to the cluster.\n\n</details>\n\n<details open><summary><code>port</code></summary>\n\nThe client port of the node to add.\n\n</details>"
    },
    {
      "id": "optional-arguments",
      "title": "Optional arguments",
      "role": "parameters",
      "text": "<details open><summary><code>cluster-bus-port</code></summary>\n\nThe cluster bus port of the node. If omitted, it defaults to the client port number plus 10,000.\n\n</details>"
    },
    {
      "id": "details",
      "title": "Details",
      "role": "content",
      "text": ""
    },
    {
      "id": "implementation-meet-and-ping-packets",
      "title": "Implementation: MEET and PING packets",
      "role": "content",
      "text": "When you send CLUSTER MEET to a node, the node specified in the command does not yet know the receiving node. To establish trust, the receiving node sends a MEET packet to the specified node instead of a [PING](https://redis.io/docs/latest/commands/ping) packet. The two packets have the same format, but MEET forces the specified node to trust the sender."
    },
    {
      "id": "redis-software-and-redis-cloud-compatibility",
      "title": "Redis Software and Redis Cloud compatibility",
      "role": "content",
      "text": "| Redis<br />Software | Redis<br />Cloud | <span style=\"min-width: 9em; display: table-cell\">Notes</span> |\n|:----------------------|:-----------------|:------|\n| <span title=\"Not supported\">&#x274c; Standard</span><br /><span title=\"Not supported\"><nobr>&#x274c; Active-Active</nobr></span> | <span title=\"Not supported\">&#x274c; Standard</span><br /><span title=\"Not supported\"><nobr>&#x274c; Active-Active</nobr></span> |  |"
    },
    {
      "id": "return-information",
      "title": "Return information",
      "role": "returns",
      "text": "**RESP2:**\n\n[Simple string reply](../../develop/reference/protocol-spec#simple-strings): `OK` if the command was successful. If the address or port specified are invalid an error is returned.\n\n**RESP3:**\n\n[Simple string reply](../../develop/reference/protocol-spec#simple-strings): `OK` if the command was successful. If the address or port specified are invalid an error is returned."
    }
  ],
  "examples": []
}
