redis 主从复制 读写分离 持久化---总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/enjoy_sun_moon/article/details/84842789

主从复制模式:

slaveof  127.0.0.1:6379  

slaveof no one

一仆二主  :一个主机两个从机,当主机重启那么两个从机地位不变  原地待命,重启完之后继续做master,从机能共享主机上的所有的数据,同时如果主机down掉难么从机上还有数据,这就是主从复制,但是从机不能直接写入数据,只能get读取数据,主机用来写入数据,这就是读写分离

薪火相传 :一个是主机一个是从机  这个从机同时也是另外一个机器的主机,    这样第一个主机写入数据 同时最后一个主机也能get到这个数据,这就是一代一代传下去 减轻第一个主机的压力,如果中途变更转向的话会清除数据,重新拷贝建立最新的。

反客为主:一个主机两个从机,主机down掉之后,两个从机很听话会乖乖不动,如果在其中一个从机中输入slaveof no one 那么这个从机会变成主机,另外一个从机我们手动指向这个刚刚变成的主机,这样他们两个成为一个主从结构,当down的主机重启之后也是master只不过这个主机与上个主机之间没有任何联系了

复制原理:slave启动连接master成功后会发送一条sync命令,master接受的命令会开启一个后台rdb持久化进程,同时收集所有的的增删改指令,进行aof持久化,在持久化进程结束之后,master将整个数据文件传送到slave,已完成一次完全同步。

全量复制:而slave服务器在接受到数据库文件数据后,将数据存盘并加载 到内存中。

增量复制:master继续将新的所有收集到的修改 命令依次传给slave,完成同步

但是只要重新连接   完全复制将被执行

哨兵机制sentinel:哨兵机制就是反客为主的自动化模式

新建一个sentinel.conf文件sentinel monitor host127.0.0.1 6379 1

sentinel-server sentinel.conf

redis持久化:

rdb是将内存中的redis数据按照一定的时间间隔写入磁盘,也就是snapshot快照,它恢复时是将文件直接读到内存里,

主程序会fork一个进程来进行持久化,会先将数据写入到一个临时文件里,等持久化完成会将临时文件替换上传持久化生成的文件,整个过程中主进程不进行任何io操作,如果是对数据的完整性和一致性要求不高的,而且是大规模的数据  那么rdb要比aof更加合适。

aof是将redis的写操作按照配置文件设置的方式以日志的形式写入磁盘中  只能追加  不能修改   当到达设置的阈值,就会rewrite

当redis重启时会先寻找aof文件进行恢复。

redis会先找到aof进行恢复

配置主从复制的方法

第一种:

先打开6379的redis然后使用redis-server --port 6380 --slaveof 127.0.0.1 6379 直接开启6380端口 并且关系自动就是6380是slave6379是master 

打开客户端  使用redis-cli -p 6379     或者是 redis-cli -p 6380   使用info replication  查看

第二种

同样先开启6379端口  然后开启   redis-server --port 6380 端口

redis-cli -p 6380

redis-cli -p 6379

链接两个客户端

在客户端中 使用slaveof  host port

第三种 配置文件的方法

新建一个redis6380.conf文件 1. port 改成 6380  2.  logfile '6380.log'    3.   slaveof  127.0.0.1

redis-server redis6380.conf   运行  然后使用  redis-cli -p 6380

猜你喜欢

转载自blog.csdn.net/enjoy_sun_moon/article/details/84842789