面试题答案
一键面试always策略
- 性能影响:每次执行写命令都同步到AOF文件,I/O操作频繁,性能相对较低。因为每次写操作都要进行磁盘I/O,这比将数据暂存内存要慢得多。
- 数据安全性:数据安全性最高。只要事务执行成功,写操作就会立即持久化到AOF文件,即使系统崩溃,也不会丢失任何已执行成功事务的写操作数据。
- 事务处理情况:事务中的写命令执行后立刻刷盘,若事务执行过程中系统崩溃,已提交事务的数据不会丢失,未提交事务的数据不会写入AOF文件。
everysec策略
- 性能影响:每秒同步一次AOF文件,性能相对较好。因为不需要每次写操作都进行I/O,减少了I/O次数,大部分写操作先在内存中累积,每秒批量刷盘。
- 数据安全性:数据安全性较高,但在系统崩溃时,可能会丢失1秒内已执行成功事务的写操作数据。这是因为这1秒内的数据还在内存缓冲区,未来得及刷盘。
- 事务处理情况:事务写操作先进入内存缓冲区,每秒统一刷盘。若系统在两次刷盘之间崩溃,最后1秒内已提交事务的数据可能丢失,未提交事务的数据不会写入AOF文件。
no策略
- 性能影响:由操作系统决定何时将数据同步到AOF文件,Redis本身不主动进行同步操作,性能最高。因为几乎不进行额外的I/O控制,完全依赖操作系统的缓冲区管理和刷盘机制。
- 数据安全性:数据安全性较低,系统崩溃时可能丢失大量已执行成功事务的写操作数据。具体丢失多少取决于操作系统何时将缓冲区数据刷盘。
- 事务处理情况:事务写操作仅在内存中执行,何时刷盘不确定。若系统崩溃,从上次操作系统刷盘后到崩溃前已提交事务的数据可能丢失,未提交事务的数据不会写入AOF文件。