ROLE

返回复制角色。

语法

ROLE

引入版本:2.8.12

复杂度摘要:O(1)

通过返回实例当前是否为 master、slave 或 sentinel,提供有关 Redis 实例在复制上下文中的角色的信息。该命令还返回有关复制状态(如果角色是主服务器或从服务器)或受监视主服务器名称列表(如果角色是哨兵)的附加信息。

输出格式

该命令返回一个元素数组。第一个元素是实例的角色,为以下三个字符串之一:

  • “大师”
  • “奴隶”
  • “哨兵”

数组的附加元素取决于角色。

主输出

在主实例中调用 ROLE 时的输出示例:

1) "master"
2) (integer) 3129659
3) 1) 1) "127.0.0.1"
      2) "9001"
      3) "3129242"
   2) 1) "127.0.0.1"
      2) "9002"
      3) "3129543"

主输出由以下几部分组成:

  1. 字符串 master。
  2. 当前主复制偏移量,这是主复制器和副本共享的偏移量,用于在部分重新同步中理解副本需要获取以继续的复制流部分。
  3. 由三个元素数组组成的数组,表示连接的副本。每个子数组包含副本 IP、端口和最后确认的复制偏移量。

副本上的命令输出

在副本实例中调用 ROLE 时的输出示例:

1) "slave"
2) "127.0.0.1"
3) (integer) 9000
4) "connected"
5) (integer) 3167038

副本输出由以下部分组成:

  1. 字符串 slave,因为向后兼容(请参阅本页末尾的注释)。
  2. 主站的IP。
  3. 主站的端口号。
  4. 从主服务器角度来看的复制状态,可以是 connect(实例需要连接到主服务器)、connecting(主副本连接正在进行中)、sync(主服务器和副本服务器正在尝试执行同步)、connected(副本服务器在线)。
  5. 到目前为止从副本接收到的数据量(以主复制偏移量计)。

哨兵输出

Sentinel 输出示例:

1) "sentinel"
2) 1) "resque-master"
   2) "html-fragments-master"
   3) "stats-master"
   4) "metadata-master"

哨兵输出由以下部分组成:

  1. 字符串 sentinel。
  2. 该 Sentinel 实例监控的主机名称数组。

示例

redis> ROLE
1) "master"
2) (integer) 0
3) (empty array)

关于本手册页中使用的“slave”一词的注释:从Redis 5开始,如果不是为了向后兼容,Redis项目不再使用slave这个词。不幸的是,在这个命令中,slave 这个词是协议的一部分,所以只有当这个 API 自然被弃用时,我们才能删除这种情况。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
❌ 标准
❌主动-主动
❌ 标准
❌主动-主动

返回值

RESP2

数组回复:其中第一个元素是 master、slave 或 sentinel 之一,其他元素是特定于角色的,如上所示。

RESP3

数组回复:其中第一个元素是 master、slave 或 sentinel 之一,其他元素是特定于角色的,如上所示。

资料来源:Redis 官方 ROLE 文档;中文内容参考 Redis 文档许可。