什么是 s Redis 持久化?
持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。
Redis 的持久化机制是什么?各自的优缺点?
Redis 提供两种持久化机制 RDB(默认) 和 AOF 机制: RDB:是 Redis DataBase 缩写快照 RDB 是 Redis 默认的持久化方式。按照一定的时间将内存的数据以快照的形式保 存到硬盘中,对应产生的数据文件为 dump.rdb。通过配置文件中的 save 参数来 定义快照的周期。
优点: • 1、只有一个文件 dump.rdb,方便持久化。 • 2、容灾性好,一个文件可以保存到安全的磁盘。 • 3、性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所 以是 IO 最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能 • 4.相对于数据集大时,比 AOF 的启动效率更高。
缺点: • 1、数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨 的时候) • 2、AOF(Append-only file)持久化方式: 是指所有的命令行记录以 redis 命令请 求协议的格式完全持久化存储)保存为 aof 文件。
AOF:持久化 AOF 持久化(即 Append Only File 持久化),则是将 Redis 执行的每次写命令记录 到单独的日志文件中,当重启 Redis 会重新将持久化的日志中文件恢复数据。 当两种方式同时开启时,数据恢复 Redis 会优先选择 AOF 恢复。4
优点: • 1、数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每 进行一次 命令操作就记录到 aof 文件中一次。 • 2、通过 append 模式写文件,即使中途服务器宕机,可以通过 redis- check-aof 工具解决数据一致性问题。 • 3、AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前(文件过大 时会对命令 进行合并重写),可以删除其中的某些命令(比如误操作的 flushall))
缺点: • 1、AOF 文件比 RDB 文件大,且恢复速度慢。 • 2、数据集大的时候,比 rdb 启动效率低。 优缺点是什么? • AOF 文件比 RDB 更新频率高,优先使用 AOF 还原数据。 • AOF 比 RDB 更安全也更大 • RDB 性能比 AOF 好 • 如果两个都配了优先加载 AOF
如何选择合适的持久化方式
一般来说, 如果想达到足以媲美 PostgreSQL 的数据安全性,你应该同时 使用两种持久化功能。在这种情况下,当 Redis 重启的时候会优先载入 AOF 文件来恢复原始的数据,因为在通常情况下 AOF 文件保存的数据集要 比 RDB 文件保存的数据集要完整。
• 如果你非常关心你的数据, 但仍然可以承受数分钟以内的数据丢失,那 么你可以只使用 RDB 持久化。
• 有很多用户都只使用 AOF 持久化,但并不推荐这种方式,因为定时生成 RDB 快照(snapshot)非常便于进行数据库备份, 并且 RDB 恢复数据集 的速度也要比 AOF 恢复的速度要快,除此之外,使用 RDB 还可以避免 AOF 程序的 bug。 • 如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持 久化方式。