redis aof 持久化,设置 everysec 极端情况下会丢失 1 秒还是 2 秒数据?

13次阅读

共计 301 个字符,预计需要花费 1 分钟才能阅读完成。

懵了,网上文章越看越懵,求大佬指点

网上文章总结为 everysec 时候,会启动一个后台线程每隔一秒进行一次 fsync,每次 fsync 结束就会记录刷盘时间

1. 主线在执行写命令时候,会检查刷盘时间

2. 如果 fsync 已完成,主线程直接写 AOF buf

3. 如果 fsync 未完成,检查上次刷盘时间

a). 上次刷盘时间在 2 秒内,主线程直接返回,不写 AOF buf

b). 上次刷盘时间在 2 秒外,主线程强制写 AOF buf

我不理解 3a 步骤,不写 AOF buf 那这个命令不就丢了么?

比如第 100ms 开始执行 fsync,第 101ms 收到新的写命令为 set a 123,不写 AOF buf,第 105ms 刷盘结束,那 set 命令不就丢了么

求大佬指教

正文完
 0