Redis持久化
# Reids持久化机制
# RDB
RDB(Reids DataBase):
在指定的时间间隔内将内存中的数据快照写入磁盘,保存的数据替换原来的数据,全量存储。恢复时时将快照文件直接读到内存中。
Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程时不进行任何IO操作的,这就确保了极高的性能,如果需要进行大规模数据的恢复,且对数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加高效。
优点:
- Redis数据库只有包含一个备份文件,节省磁盘空间,恢复速度快。
- 性能最大化,fork子进程负责完成持久化工作,避免服务器进程进行IO操作。
- 相比AOF机制,RDB启动效率会更高。
缺点:
- 不能保证高可用,当系统宕机时,没来得及写入磁盘的数据将丢失。最后一次持久化的数据可能丢失。
- fork子进程协助完成持久化工作,当数据集较大时,可能会导致整个服务器停止服务几百毫秒。
# AOF
AOF(Append only File):
以日志的形式来记录每一个写操作,将Redis执行过程的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,增量存储,相比RDB,它的粒度更细,redis启动之初会读取该文件重新构建数据,也就是redis重启之后会根据日志文件的内容将写指令从前到后执行一次已完成数据的恢复工作。
AOF默认不开启。
优点:
- 保证数据安全,丢失数据非常少。有3种同步策略:每秒同步、每修改同步和不同步。
- 采用日志文件的方式,在写入时出现宕机也不会破坏日志文件已存在的内容。
缺点:
- 相同数量的数据,AOF文件通常要大于RDB。
- AOF运行效率会慢一些。
编辑 (opens new window)
上次更新: 2023/08/20, 21:21:52