redis持久化

redis 持久化:
1、RDB
一是保存所有数据,而是保存所有操作命令,save是父进程做,当前进程会停止,使用bgsavd会启动一个子进程,不会影响父进程,但是子进程速度没有父进程快,每次生成dump.rdb都会覆盖原有备
RDB方式,是将redis某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。
redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,
让我们可以随时来进行备份,因为快照文件总是完整可用的。
对于RDB方式,redis会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能。
如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
虽然RDB有不少优点,但它的缺点也是不容忽视的。如果你对数据的完整性非常敏感,那么RDB方式就不太适合你,因为即使你每5分钟都持久化一次,当redis故障时,
仍然会有近5分钟的数据丢失。所以,redis还提供了另一种持久化方式,那就是AOF
2、AOF解决rdb缺点,用户可以根据自己的需要对aof持久化进行调整,让redis在遭遇意外停机不丢失任何数据,或者只丢失1秒的数据
aof:每当修改数据库,都会将命令写入到aof文件结尾,所以只要执行aof所有命令就可以恢复了
安全性:就算执行aof也不保证不对事数据,系统每次写aof文件时,会将数据写入系统缓存,之后才会写入磁盘aof文件
AOF的appendfync选项:
always:服务器没写入一次命令,就调用fdatasync,将缓冲区数据写入硬盘
everysec:每秒钟调用fdatasync,这种最多只丢1秒数据
no:服务器不主动调用fatasync,有操作系统决定缓冲区内容写入磁盘
always速度慢,everysec和no很快,默认everysec

AOF重写:
1、客户端向服务器发送BAREWRITEAOF命令
2、通过配置选项让服务器自动执行BAREWRITEAOF命令,分别是:
auto-aof-rewrite-min-size 64mb,出发aof重写最小体积
auto-aof-rewrite-percentage 100,扩展到了现在afo的一倍才会重写
RDB_AOF这两种方式可以一起使用

原文地址:https://www.cnblogs.com/qull/p/6579535.html