redis当前作为一款非常热门的缓存中间件,是现在面试必问的知识了。所以今天就说下redis的主从复制了
下面讲下操作redis去实现主从复制读写分离的两种方式: ①:通过命令行开启:slaveof host port ②:通过配置文件写死,这样可以一启动redis就实现了,不用我们再去手敲
可以通过info replication命令查看主从信息: 踩过的坑:①配置文件里面bind ip 只设置了本地,所以从服务器连接不上主服务器,需要在配置文件里面改下 ②连接redis一般都会设置密码,所以需要从服务器需要在配置文件里面增加一行:slaveofauth password,否则连接不上主服务器③改了配置文件后,一定要记得重启redis!!!
主从同步实现原理: 分为增量同步和全量同步。从服务器发送psync命令到主服务器,如果当前master的replication Id和自己的replication Id相同则根据偏移量增量同步。如果不相同则执行全量同步。全量同步master会通过rdb的方式生成一个当前数据的副本,然后传输给slaver,slaver将数据加载到内存中。全量同步对于master,这时候还是可以进行正常的读写请求,但是slaver此时却不能。
主从复制的好处:①可以实现读写分离。②slaver开启只读可以让数据更安全,像非常重要的数据,却很少修改的,却读请求多的服务可以部署在从服务器上③主从复制实现后没必要让每个服务器都开启持久化,可以让主服务器关闭持久化机制,节省持久化带来的开销,让从服务器开启持久化就好了。④整个系统支持的请求数更大了,宏观上来说性能得到了改善
主从复制的缺点:①多台slaver突然启动,或者master宕机后启动,主从切换以及第一次大量slaver建立主从关系,都会导致每个slaver都全量复制,让master性能突然下降。②主从复制的master太少只有一台,压力也太大了③关闭master的持久化,如果master突然宕机而又开启了自动重启功能会导致slaver全量复制空的数据,从而整个集群数据都丢失了。可以将slaver的rdb文件拷贝到master上再启动,或者人工取消slaver,自己升级成master④如果网络堵塞,主从复制延迟了,可能会读到旧的数据。⑤slaver的key不会过期,只能等到master的key过期才能同步过来。
|