概述
Redis的持久化策略
- RDB:
redis的默认策略,在指定时间内生成数据快照,默认保存到dump.rdb文件中,当redis重启的时候会自动加载dump.rdb文件到内存中。
用户可以使用SAVE(同步)BSACE(异步)手动保存数据,可以设置服务器的save选项让服务器每间隔一段时间执行一次Bsave命令.
优点:
rdb是一个紧凑文件,直接使用rdb文件就可以还原数据,数据保存由一个子进程保存,不影响父进程的其他操作,恢复数据效率高于AOP.
缺点:
每次保存点之间导致redis不可意料的关闭,会数据丢失。由于每次保存数据都需要在进程fork()子进程里,数据量大时比较耗费性能 。
- AOF:
AOF默认是关闭的,需要在redis.conf文件中开启。Redis支持AOP和RDB同时开启,同时开启时,AOF优先级高。
AOF原理:实时监听执行的命令,如果发现进行了修改数据的操作,同时直接同步到数据库文件中,同时会把命令记录到日志中,即使出现问题由于日志 已经记录命令,下次启动也会按照日志进行恢复数据.
优点:相对于RDB数据更安全.
缺点:相同数据集内存占用AOF要大于RDB,慢一些.
开启AOF的步骤:
修改redis.conf中。Appendonly yes 开启AOF.
Appendfilenname设置aof数据文件,名字随意命名.
Redis主从复制和读写分离
Redis往往是以集群的形式搭建,集群中有redis-proxy、master、replica、HA等几个角色。在读写分离实例中,新增read-only replica角色来承担读流量,replica作为热备不提供服务,架构上保持对现有集群规格的兼容性。redis-proxy按权重将读写请求转发到master或者某个read-only replica上;HA负责监控DB节点的健康状态,异常时发起主从切换或重搭read-only replica,并更新路由。
主从复制有两种复制方式:
- 星型复制:所有的从节点都直接复制主节点,每个从节点互不影响,但是由于Redis是单线程的,都从主节点复制会给Master的CUP带来很大的压力.不推荐.
- 链型复制:只有一个从节点复制,其它字节点依次从上一个节点复制,这样导致后面的子节点的延迟较长,但影响不大,所以推荐使用.
读写分离:
所有的数据都从Master中写进来,然后每个从节点去同步Master中的数据,用到数据的时候都从从节点中读取,一般不从Master中读.
基于Ducker搭建一主多从Redis集群
- 拉取redis镜像
- 创建三个Ducker容器
//创建并运行 -给个名字 -给端口 -把opt/redis共享给data -后台运行
#docker run –name redis1 –p 6379:6379-v/opt/redis:/data -d redis
#docker run –name redis2 –p 6380:6380-v/opt/redis data -d redis
#docker run –name redis3 –p 6371:6381-v/opt/redis:/data -d redis
-不需要改主,只需要操作要设置为从的redis
#docker exec -it redis2 redis -cli (进入redis2的命令行)
Slaveof 主reidis的ip/端口号
Role可以看是主还是从
如果要采用星型复制则两个从都取Slaveof主的端口号.
如果采用链型复制则redis2去Slaveof主的端口号redis3去Slaveof redis2的端口号.
最后
以上就是时尚大象为你收集整理的Redis03-持久化策略和主从复制的全部内容,希望文章能够帮你解决Redis03-持久化策略和主从复制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复