Redis之主从复制/读写分离

Redis之主从复制 读写分离:

 

行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,

自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

 

一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下:

  1. 从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
  2. 从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内容容量为256G,也不能将所有内容用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G

主机可读写    从机只可读

Redis之主从复制/读写分离

 

如何使用:

1、配从(库)不配主(库)

2、从库配置:Slaveof 主库IP 主库端口

 

Redis之主从复制/读写分离

 


 

手动模式:

主机挂掉,从机原地待命 从机数据仍然存在

从机挂掉,再开启将会变Master,需要重新Slaveof  ip 端口变为从机

缺点:主机挂掉 需要手动把从机变为主机 然后把其他从机重新SLAVEOF到新主机

 

 

Redis之主从复制/读写分离

 

 

主从复制原理:

Redis之主从复制/读写分离

 

 

哨兵模式(sentinel)

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

 

配置哨兵监控master:

Touch sentinel.conf新建文件 写入如下内容:

 sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

启动哨兵:

redis-sentinel  sentinel.conf

 

情况1:Master挂掉

哨兵会根据投票来决定剩下的从机谁做新的Master,可能会有延迟

 

情况2:原有Master复活

哨兵会把原Master加入到新的Master下作为从机

 

一组sentinel能同时监控多个Master

 

 

主从复制缺点:

        由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。