CLUSTER SLOTS

Available since 3.0.0.

Time complexity: O(N) where N is the total number of Cluster nodes

CLUSTER SLOTS returns details about which cluster slots map to which Redis instances. The command is suitable to be used by Redis Cluster client libraries implementations in order to retrieve (or update when a redirection is received) the map associating cluster hash slots with actual nodes network coordinates (composed of an IP address and a TCP port), so that when a command is received, it can be sent to what is likely the right instance for the keys specified in the command.

*Nested Result Array

Each nested result is:

  • Start slot range
  • End slot range
  • Master for slot range represented as nested IP/Port array
  • First replica of master for slot range
  • Second replica
  • …continues until all replicas for this master are returned.

Each result includes all active replicas of the master instance for the listed slot range. Failed replicas are not returned.

The third nested reply is guaranteed to be the IP/Port pair of the master instance for the slot range. All IP/Port pairs after the third nested reply are replicas of the master.

If a cluster instance has non-contiguous slots (e.g. 1-400,900,1800-6000) then master and replica IP/Port results will be duplicated for each top-level slot range reply.

Warning: Newer versions of Redis Cluster will output, for each Redis instance, not just the IP and port, but also the node ID as third element of the array. In future versions there could be more elements describing the node better. In general a client implementation should just rely on the fact that certain parameters are at fixed positions as specified, but more parameters may follow and should be ignored. Similarly a client library should try if possible to cope with the fact that older versions may just have the IP and port parameter.

*Return value

Array reply: nested list of slot ranges with IP/Port mappings.

*Sample Output (old version)

  1. 127.0.0.1:7001> cluster slots
  2. 1) 1) (integer) 0
  3. 2) (integer) 4095
  4. 3) 1) "127.0.0.1"
  5. 2) (integer) 7000
  6. 4) 1) "127.0.0.1"
  7. 2) (integer) 7004
  8. 2) 1) (integer) 12288
  9. 2) (integer) 16383
  10. 3) 1) "127.0.0.1"
  11. 2) (integer) 7003
  12. 4) 1) "127.0.0.1"
  13. 2) (integer) 7007
  14. 3) 1) (integer) 4096
  15. 2) (integer) 8191
  16. 3) 1) "127.0.0.1"
  17. 2) (integer) 7001
  18. 4) 1) "127.0.0.1"
  19. 2) (integer) 7005
  20. 4) 1) (integer) 8192
  21. 2) (integer) 12287
  22. 3) 1) "127.0.0.1"
  23. 2) (integer) 7002
  24. 4) 1) "127.0.0.1"
  25. 2) (integer) 7006

*Sample Output (new version, includes IDs)

  1. 127.0.0.1:30001> cluster slots
  2. 1) 1) (integer) 0
  3. 2) (integer) 5460
  4. 3) 1) "127.0.0.1"
  5. 2) (integer) 30001
  6. 3) "09dbe9720cda62f7865eabc5fd8857c5d2678366"
  7. 4) 1) "127.0.0.1"
  8. 2) (integer) 30004
  9. 3) "821d8ca00d7ccf931ed3ffc7e3db0599d2271abf"
  10. 2) 1) (integer) 5461
  11. 2) (integer) 10922
  12. 3) 1) "127.0.0.1"
  13. 2) (integer) 30002
  14. 3) "c9d93d9f2c0c524ff34cc11838c2003d8c29e013"
  15. 4) 1) "127.0.0.1"
  16. 2) (integer) 30005
  17. 3) "faadb3eb99009de4ab72ad6b6ed87634c7ee410f"
  18. 3) 1) (integer) 10923
  19. 2) (integer) 16383
  20. 3) 1) "127.0.0.1"
  21. 2) (integer) 30003
  22. 3) "044ec91f325b7595e76dbcb18cc688b6a5b434a1"
  23. 4) 1) "127.0.0.1"
  24. 2) (integer) 30006
  25. 3) "58e6e48d41228013e5d9c1c37c5060693925e97e"