Redis之主从复制 读写分离:
行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,
自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主
一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下:
- 从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
- 从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内容容量为256G,也不能将所有内容用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。
主机可读写 从机只可读
如何使用:
1、配从(库)不配主(库)
2、从库配置:Slaveof 主库IP 主库端口
手动模式:
主机挂掉,从机原地待命 从机数据仍然存在
从机挂掉,再开启将会变Master,需要重新Slaveof ip 端口变为从机
缺点:主机挂掉 需要手动把从机变为主机 然后把其他从机重新SLAVEOF到新主机
主从复制原理:
哨兵模式(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机器数量的增加也会使这个问题更加严重。