redis持久化RDB,AOF

redis是一个高级的key-value数据库,跟memcached类似,不过数据可以持久化,而且支持的数据类型也非常丰富。redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上,称为半持久化模式,也可以把每一次数据变化都写入到一个append only file里面,称为全持久化模式

RDB的持久化配置?

#时间策略

save 900 1 :表示900秒类如果有一条写入命令,就触发产生一次快照

save 300 10

save 60 10000

#文件名称

dbfilename dump.rdb

#文件保存路径

dir /home/work/redis/data

#如果持久化出错,主进程是否停止写入  

stop-writes-on-bgsave-error yes :当备份进程出错的时候,主进程就停止接受新得写入操作,保护数据一致性的问题

#是否压缩

rdbcompression yes

#导入时是否检查

rdbchecksum yes

AOF的相关配置?

#是否开启aof

appendonly yes

#文件名称

appendfilename "appendonly.aof"

#同步方式

appendsync everysec

#aof重写期间是否同步

no-appendsync-on-rewrite no

#重写触发配置

auto-aof-rewirte-percentage 100

auto-aof-rewrite-min-size 64mb

#加载aof时如果有错误如何处理

aof-load-truncated yes

#文件重新二策略

aof-rewrite-incremental-fsync yes

详述:

appendfsync

       always:把每个写命令都立即同步到aof,很慢但是很安全

        everysec:每秒同步一次

        no:redis不处理交给OS来处理,非常快,但不可控

一般情况下都采用everysec配置,兼顾速度与安全,最多损失1s的数据

aof-load-truncated yes:在加载时发现aof尾部不正确,会向客户端写入一个log,但是会继续执行,如果设置为no,则会停止

Redis中RDB实现原理

redis中RDB持久化的触发分为俩种,手动触发和redis定时触发

手动触发有俩种:

save:会阻塞当前redis服务器,知道持久化完成

bgsave:该触发方式会fork一个紫禁城,由子进程负责持久化,因此阻塞只会发生在fork子进程的时候

自动触发:

根据配置文件中的 save m n配置自动触发规则

注意的是fork操作会阻塞,导致redis读写性能下降,我们可以控制单个redis实例的最大内存,来尽可能降低redis在fork时的时间消耗。

RDB中AOF实现原理

AOF整个流程分为2步,1是命令的实时写入,2是对aof文件的重写

aof重写是为了减少aof文件的大小,可以手动触发或自动触发 

从持久化中恢复数据

Redis中RDB和AOF的优缺点 

RDB持久化的优点

1、rdb会生成多个数据文件,每个数据文件都可以代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备,可以将这种完整的数据文件发送到一些远程的安全存储上去。

2、rdb对redis对外提供读写服务,影响非常小,可以让redis保持高性能,因为redis主进程只需要fork一个子进程,让子进程执行磁盘IO操作来进行RDB持久化即可。

3、相对AOF持久化机制来说,直接基于RDB数据文件来重启和恢复redis进程,更加快速

缺点:

1、如果想要在redis故障时,尽可能少的丢失数据,那么RDB没有AOF好,一般来说,RDB数据快照文件,都是每隔五分钟,或者更长时间生成一次,这个时候就得接受一旦redis进程宕机,那么就会丢失最近五分钟得数据

2、RDB每次在fork子进程执行RDB快照数据文件生成的时候,如果数据文件特别大,可能会导致对客户端提供的服务暂停阻塞。因为在fork进程中,可能会发生阻塞。

AOF持久化机制的优点

1、AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多会丢失1秒钟的数据

2、AOF日志文件以append-only模式写入,没有任何磁盘寻址开销,写入性能非常高,而且文件不容易破损,及时文件尾部破损,也很容易修复。

3、AOF日志文件即使过大,出现后台重写操作,也不会影响客户端的读写,因为在rewrite log的时候,会对其中的指导进行压缩,创建出一份需要恢复数据的最小日志出来。再创建新日志文件的时候,老的日志文件照常写入,当心的merge后的日志文件ready的时候,再交换新老日志文件即可

4、AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除紧急恢复,比如某人不小心flushall命令清空所有数据,我们可以立即拷贝AOF文件,将flushall命令给删掉,就可以自动恢复所有的数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值