**RDB持久化**
RDB持久化是将某一时刻的全部数据写入到一个RDB文件中,这是Redis默认的持久化方式。我们可以通过配置设置自动做快照持久化,如每过N秒数据集有M个改动则自动触发。
save 900 1
save 300 10
save 60 10000
这个配置的意思是,如果900秒内如果超过1个key被修改,或者300秒内如果超过10个key被修改,或者60秒如果超过10000个key被修改,那么就触发RDB持久化操作。
**AOF持久化**
AOF持久化记录了服务器接收到的所有写操作命令。Redis会将接收到的写命令追加到AOF文件的末尾,当Redis重启时会通过重新执行保存在AOF文件中的命令来重建数据。
AOF的配置主要包括:
appendonly yes
appendfsync everysec
其中`appendonly yes`表示开启AOF持久化,`appendfsync everysec`表示每秒同步一次,这种方式既可以做到数据安全也不会阻塞Redis的性能。
**RDB与AOF比较**
RDB和AOF各有优劣。RDB在数据恢复时速度快,但在Redis突然宕机的情况下可能会丢失最后一次快照后的所有数据。而AOF在日志较大时恢复速度会慢,但其数据完整性更高,因为所有写入命令都被记录。
在实际使用中,我们可以根据业务需求选择合适的持久化方式,甚至可以同时使用RDB和AOF持久化,以兼顾数据的完整性和恢复速度。