File tree Expand file tree Collapse file tree 3 files changed +3
-3
lines changed
Expand file tree Collapse file tree 3 files changed +3
-3
lines changed Original file line number Diff line number Diff line change @@ -68,7 +68,7 @@ Redis AOF 持久化机制是在执行完命令之后再记录日志,这和关
6868
6969在 Redis 的配置文件中存在三种不同的 AOF 持久化方式( ` fsync ` 策略),它们分别是:
7070
71- 1 . ` appendfsync always ` :主线程调用 ` write ` 执行写操作后,后台线程( ` aof_fsync ` 线程) 立即会调用 ` fsync ` 函数同步 AOF 文件(刷盘),` fsync ` 完成后线程返回,这样会严重降低 Redis 的性能(` write ` + ` fsync ` )。
71+ 1 . ` appendfsync always ` :主线程调用 ` write ` 执行写操作后,** 主线程 ** 立即会调用 ` fsync ` 函数同步 AOF 文件(刷盘),` fsync ` 完成后线程返回。 ` always ` 策略由 ** 主线程直接执行 fsync ** ,而非后台线程。这种方式数据最安全,但每个写操作都会同步阻塞主线程,严重降低 Redis 的性能(` write ` + ` fsync ` )。
72722 . ` appendfsync everysec ` :主线程调用 ` write ` 执行写操作后立即返回,由后台线程( ` aof_fsync ` 线程)每秒钟调用 ` fsync ` 函数(系统调用)同步一次 AOF 文件(` write ` +` fsync ` ,` fsync ` 间隔为 1 秒)
73733 . ` appendfsync no ` :主线程调用 ` write ` 执行写操作后立即返回,让操作系统决定何时进行同步,Linux 下一般为 30 秒一次(` write ` 但不` fsync ` ,` fsync ` 的时机由操作系统决定)。
7474
Original file line number Diff line number Diff line change @@ -194,7 +194,7 @@ AOF 工作流程图如下:
194194
195195在 Redis 的配置文件中存在三种不同的 AOF 持久化方式( ` fsync ` 策略),它们分别是:
196196
197- 1 . ` appendfsync always ` :主线程调用 ` write ` 执行写操作后,会立刻调用 ` fsync ` 函数同步 AOF 文件(刷盘)。主线程会阻塞, 直到 ` fsync ` 将数据完全刷到磁盘后才会返回。这种方式数据最安全,理论上不会有任何数据丢失。但因为每个写操作都会同步阻塞主线程,所以性能极差。
197+ 1 . ` appendfsync always ` :主线程调用 ` write ` 执行写操作后,会立即调用 ` fsync ` 函数同步 AOF 文件(刷盘),期间主线程阻塞, 直到 ` fsync ` 将数据完全刷到磁盘后才会返回。 ` always ` 策略由 ** 主线程直接执行 fsync ** ,而非后台线程 。这种方式数据最安全,理论上不会有任何数据丢失。但因为每个写操作都会同步阻塞主线程,所以性能极差。
1981982 . ` appendfsync everysec ` :主线程调用 ` write ` 执行写操作后立即返回,由后台线程( ` aof_fsync ` 线程)每秒钟调用 ` fsync ` 函数(系统调用)同步一次 AOF 文件(` write ` +` fsync ` ,` fsync ` 间隔为 1 秒)。这种方式主线程的性能基本不受影响。在性能和数据安全之间做出了绝佳的平衡。不过,在 Redis 异常宕机时,通常可能丢失最近 1 秒内的数据。
199199
200200> ** 生产级真相(2 秒丢失与阻塞风险)** :
Original file line number Diff line number Diff line change @@ -163,7 +163,7 @@ Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而
163163与 RDB 持久化相比,AOF 持久化的实时性更好。在 Redis 的配置文件中存在三种不同的 AOF 持久化方式(` fsync ` 策略),它们分别是:
164164
165165``` bash
166- appendfsync always # 每次有数据修改发生时,都会调用fsync函数同步AOF文件,fsync完成后线程返回,这样会严重降低Redis的速度
166+ appendfsync always # 每次有数据修改发生时,主线程直接调用fsync同步AOF文件(刷盘),fsync完成后返回。always由主线程执行而非后台线程,严重降低Redis性能
167167appendfsync everysec # 每秒钟调用fsync函数同步一次AOF文件
168168appendfsync no # 让操作系统决定何时进行同步,一般为30秒一次
169169```
You can’t perform that action at this time.
0 commit comments