大键如何影响Redis的持久性? - Xu

22-09-20 banq

当我们开启 AOF 持久化有三种模式:
  • 1、Always - 每当内存中有数据更新时,同步写入数据到磁盘。
  • 2、EverySec - 每秒写入磁盘。
  • 3、No - Redis 不控制何时将数据写入磁盘。相反,操作系统决定何时将数据写入磁盘。

下面分析大键Key的影响:
Redis首先将key写入内存,然后调用write()将数据写入内核缓冲区缓存。然后 fsync() 将文件的所有修改的内核数据刷新到磁盘设备有 3 种模式:
  • 在“Always”模式下,它同步调用 fsync()。如果我们需要更新一个大键,主线程将被阻塞,因为它必须等待大键key全部写入完成。
  • “EveySec” 启动一个后台定时器任务,每秒调用一次 fsync(),所以大键对 Redis 主线程没有影响。
  • “No”模式从不调用 fsync () 。这取决于操作系统。大键对主线程没有影响。