redis持久化:RDB和AOF

2020-05-17  本文已影响0人  salix_

好文章:
https://juejin.im/post/5d24a1b4f265da1baf7d126e
https://juejin.im/post/5d776dcef265da03b574744d

一:有哪两种方式

持久化就是redis把数据落到磁盘。持久化方式有RDB、AOF。

二:RDB

1. RDB是通过快照持久化
2. 数据完整性

注意噢,redis是把数据全部都放在了内存里。所以生成快照就不存在数据不完整一说了。

3. 触发快照的时间
4.save和bgsave的区别
5. 怎样设置bgsave自动执行

三:AOF持久化

AOF持久化会把被执行的写命令写到AOF文件的末尾,记录数据的变化。默认情况下,Redis是没有开启AOF持久化的,开启后,每执行一条更改Redis数据的命令,都会把该命令追加到AOF文件中,这是会降低Redis的性能,但大部分情况下这个影响是能够接受的,另外使用较快的硬盘可以提高AOF的性能。
通过配置redis.conf文件开启AOF持久化,自己搜一搜。

四:对比(下面的是别的文章的总结)

1. RDB

优点:
RDB快照是一个压缩过的非常紧凑的文件,保存着某个时间点的数据集,适合做数据的备份,灾难恢复
可以最大化Redis的性能,在保存RDB文件,服务器进程只需fork一个子进程来完成RDB文件的创建,父进程不需要做IO操作
与AOF相比,恢复大数据集的时候会更快
缺点:
RDB的数据安全性是不如AOF的,保存整个数据集的过程是比繁重的,根据配置可能要几分钟才快照一次,如果服务器宕机,那么就可能丢失几分钟的数据
Redis数据集较大时,fork的子进程要完成快照会比较耗CPU、耗时

2. AOF

优点:
数据更完整,安全性更高,秒级数据丢失(取决fsync策略,如果是everysec,最多丢失1秒的数据)
AOF文件是一个只进行追加的日志文件,且写入操作是以Redis协议的格式保存的,内容是可读的,适合误删紧急恢复
缺点:
对于相同的数据集,AOF文件的体积要大于RDB文件,数据恢复也会比较慢
根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB。 不过在一般情况下, 每秒 fsync 的性能依然非常高

3. 如何选择RDB和AOF
上一篇 下一篇

猜你喜欢

热点阅读