diff --git a/notes/Redis_持久化.md b/notes/Redis_持久化.md index 692c4ef..dd25dcb 100644 --- a/notes/Redis_持久化.md +++ b/notes/Redis_持久化.md @@ -56,7 +56,7 @@ RDB 文件默认保存在 Redis 的工作目录下,默认文件名为 `dump.rd **2. 压缩算法** -Redis 默认采用 LZF 算法对生成的 RDB 文件做压缩处理, 这样可以减少占用空间和网络传输的数据量,但是压缩过程会耗费 CPU 的计算资源, 你可以按照实际情况,选择是否启用。可以通过修改 `redis.conf` 中的`rdbcompression `配置或使用以下命令来进行动态修改: +Redis 默认采用 LZF 算法对生成的 RDB 文件做压缩处理, 这样可以减少占用空间和网络传输的数据量,但是压缩过程会耗费 CPU 的计算资源, 你可以按照实际情况,选择是否启用。可以通过修改 `redis.conf` 中的 `rdbcompression` 配置或使用以下命令来进行动态修改: ```shell config set rdbcompression{yes|no} @@ -76,14 +76,14 @@ Redis 提供了三种同步策略,用于控制 AOF 缓冲区同步数据到磁 | 可选配置 | 说明 | | -------- | ------------------------------------------------------------ | -| always | 命令写入 aof_buf 后就调系统 fsync 操作同步到 AOF 文件 | -| everysec | 命令写入 aof_buf 后就调用系统的 write 操作,但 fsync 同步文件的操作则由专门线程每秒调用一次 | -| no | 命令写入 aof_buf 后就调用系统的 write 操作,不对 AOF 文件做 fsync 同步,同步操作由操作系统负责,通常同步周期最长为30秒 | +| **always** | 命令写入 aof_buf 后就调系统 fsync 操作同步到 AOF 文件 | +| **everysec** | 命令写入 aof_buf 后就调用系统的 write 操作,但 fsync 同步文件的操作则由专门线程每秒调用一次 | +| **no** | 命令写入 aof_buf 后就调用系统的 write 操作,不对 AOF 文件做 fsync 同步,同步操作由操作系统负责,通常同步周期最长为30秒 | write 和 fsync 操作说明: -- write 操作会触发延迟写机制,Linux 在内核提供页缓冲区用来提高硬盘的 IO 性能,write 操作在写入系统缓冲区后直接返回。同步操作依赖于系统调度机制, 例如:缓冲区页空间写满或达到特定时间周期。 同步文件之前, 如果此时系统故障宕机,缓冲区内数据将丢失。 -- fsync 针对单个文件操作,做强制硬盘同步,fsync 将阻塞直到写入硬盘完成后返回,保证了数据持久化。 +- write 操作会触发延迟写机制,Linux 在内核提供页缓冲区用来提高硬盘的 IO 性能,write 操作在写入系统缓冲区后直接返回。同步操作依赖于系统调度机制,例如缓冲区页空间写满或达到特定时间周期。 同步文件之前,如果此时系统故障宕机,缓冲区内数据将丢失。 +- fsync 针对单个文件操作,做强制硬盘同步,fsync 操作将阻塞直到写入硬盘完成后返回,它保证了数据持久化的安全。 Redis 默认的同步机制为`everysec`,此时能够兼顾性能和保证数据安全,在发生意外宕机的时,最多会丢失一秒的数据。 @@ -99,7 +99,7 @@ Redis 默认的同步机制为`everysec`,此时能够兼顾性能和保证数 - RDB 使用一次性生成内存快照的方式, 产生的文件紧凑压缩比更高, 适用于备份和全量复制等场景。 - RDB 文件通常比同一数据集的等效 AOF 文件小,所以使用 RDB 恢复数据远远快于 AOF 方式。 -- RDB 最大限度地提高了Redis的性能,因为 Redis 父进程只需要 fork 出一个子进程,它本生并不会执行磁盘 I/O 等操作。 +- RDB 最大限度地提高了 Redis 的性能,因为 Redis 父进程只需要 fork 出一个子进程,它本生并不会执行磁盘 I/O 等操作。 #### RDB 的缺点 @@ -113,12 +113,12 @@ Redis 默认的同步机制为`everysec`,此时能够兼顾性能和保证数 #### AOF 的缺点 -+ AOF文件通常比同一数据集等效的 RDB 文件大。 ++ AOF 文件通常比同一数据集等效的 RDB 文件大。 + 根据选择的同步策略的不同,AOF 可能比 RDB 还慢。 ### 4.2 使用建议 -按照 Redis 官方的推荐,为保证的数据安全性,可以同时使用这两种持久化机制,在 Redis 官方的长期计划里面,未来可能会将 AOF 和 RDB 统一为单一持久性模型。需要注意的是,在这种情况下,当 Redis 重新启动时,Redis 将使用 AOF 文件重建数据集,因为它可以保证数据的最少丢失。 +按照 Redis 官方的推荐,为保证的数据安全性,可以同时使用这两种持久化机制,在 Redis 官方的长期计划里面,未来可能会将 AOF 和 RDB 统一为单一持久化模型。需要注意的是,在这种情况下,当 Redis 重新启动时,Redis 将使用 AOF 文件重建数据集,因为它可以保证数据的最少丢失。