复制

单机模式下,建立主从关系使用slaveof命令。

cluster模式下,建立主从关系使用cluster replicate,与Redis命令完全一致。

slaveof命令

slaveof命令主要用于设置主从复制关系。

  • slaveof host port:用于设置当前实例为指定实例的从属实例。跟原生redis不同,为了防止错误操作,如果当前实例已经是从属实例了,再次设置为其他实例的从属实例时会返回错误。另外,如果当前实例有数据,也会返回失败,需要执行flushall之后再设置。

  • slaveof no one:用于断开主从关系。

Example

  1. 127.0.0.1:51003> slaveof 127.0.0.1 51002
  2. OK
  3. 127.0.0.1:51003> slaveof 127.0.0.1 51001
  4. (error) ERR:8,msg:explicit set sync source empty before change it
  5. 127.0.0.1:51003> slaveof 127.0.0.1 51002
  6. (error) ERR:4,msg:store not empty
  7. 127.0.0.1:51003> slaveof no one
  8. OK
  9. 127.0.0.1:51003> flushall
  10. OK

cluster replicate命令

cluster replicate

输入master的nodeid作为参数。

如果节点已经有一个master了,要切换到新的master,该命令会返回错误,主要是为了保证数据不被误删。

如果要换新master,需要先执行cluster forget,再执行flushall,然后再执行cluster replicate命令。