1. Redis持久化
redis 是一个支持持久化的内存数据库,也就是说 redis 需要经常将内存中的数据同步到磁盘来保证持久化,持久化可以避免因进程退出而造成数据丢失;
注意:如果两种持久化方案同时存在,AOF的优先级>RDB优先级
1.1 RDB持久化方式
RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,RDB不适合实时持久化,适合全量复制,灾难性恢复。
(1)RDB:文件后缀名xxx.rdb 默认方式
(2)特点:全量复制,灾难性恢复
(3)RDB持久化配置
# 时间策略 snapshot
save 900 1:表示900s内如果有1条是写入命令,就触发产生一次快照,可以理解为就进行一次备份
save 300 10:表示300s内有10条写入,就产生快照
save 60 10000
# 文件名称
dbfilename dump.rdb
# 文件保存路径
dir /home/work/app/redis/data/
# 如果持久化出错,主进程是否停止写入
stop-writes-on-bgsave-error yes
# 是否压缩
rdbcompression yes
# 导入时是否检查
rdbchecksum yes
#禁用RDB配置
save的最后一行写上:
save ""
#save 900 1
#save 300 10
#save 60 10000
1.2 AOF持久化方式
针对RDB不适合实时持久化,redis提供了AOF持久化方式来解决 开启:redis.conf设置:appendonly yes (默认不开启,为no) 默认文件名:appendfilename "appendonly.aof"
(1)AOF:文件后缀名xxx.aof
(2)特点:适合实时持久化
(3)AOF持久化配置
appendonly yes //启用aof持久化方式
# appendfsync always //实时检查是否有数据写入操作,最慢的,但是保证完全的持久化以下不推荐使用
appendfsync everysec //每秒强制写入磁盘一次,性能和持久化方面做了折中,推荐
# appendfsync no //完全依赖os,性能最好,持久化没保证(操作系统自身的同步)
no-appendfsync-on-rewrite yes //正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 //aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb //aof文件,至少超过64M时,重写注意:当AOF和RDB文件同时存在时,优先加载RDB
(4)Redis主从复制
新增redis6380.conf, 加入 slaveof 192.168.42.111 6379, 在6379启动完后再启6380,完成配置,断开主机,进行测试。
Redis主从拓扑
① 一主一从
用于主节点故障转移从节点,当主节点的“写”命令并发高且需要持久化,可以只在从节点开启AOF(主节点不需要)
② 一主多从
针对“读”较多的场景,“读”由多个从节点来分担,但节点越多,主节点同步到多节点的次数也越多,影响带宽,也加重主节点的稳定
③ 树状主从