Redis的主从切换命令可以用slaveof no one来做


127.0.0.1:12000> slaveof no one
OK
127.0.0.1:12000> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:1681101
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

此时去原来的主机上看


127.0.0.1:12000> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:1681731
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:633156
repl_backlog_histlen:1048576

另外redis重设主从时,不用去考虑传统RDBMS的主从数据不一致的情况,很简单,只要设置了主从,从机上的数据将被主机上的数据覆盖来保持一致。


--在新的主机上更新数据,然后重新指定为从机
127.0.0.1:12000> slaveof no one
OK
127.0.0.1:12000> info replication
# Replication
role:master
connected_slaves:0
master_repl_offset:1687792
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:12000> get addr
"hangzhou"
127.0.0.1:12000> set addr "shanghai"
OK
127.0.0.1:12000> get addr
"shanghai"
127.0.0.1:12000> del sex
(integer) 1
127.0.0.1:12000> keys *
1) "name"
2) "career"
3) "addr"
127.0.0.1:12000> slaveof 192.168.11.215 12000
OK
127.0.0.1:12000> get addr
"hangzhou"
127.0.0.1:12000> keys *
1) "addr"
2) "career"
3) "sex"
4) "name"
127.0.0.1:12000>

可以看到数据重新又被刷了,这在传统的关系型数据里面是不可能的