当Redis在做AOF持久化时,会出现AOF文件重写(以减少持久化文件的大小)的操作,这个时候会直接读取Redis数据库中的数据进行操作,会把Redis数据库中存在的键值对写入到AOF重写文件中,这个时候常常会出现如下情况:用户在这个AOF重写过程中对数据库进行了写入或者修改的操作。
Redis的解决方法:
由于AOF的重写是由Redis主线程之外一个子线程执行,是在AOF写入的时候,会重新建立一个AOF重写缓冲区,当用户对数据库进行操作时,会把用户的操作追加到AOF重写缓冲区和AOF缓冲区中,此时AOF文件写入操作会同时从AOF缓冲区和AOF重写缓冲区两个地方读入数据,这样就保证了用户的添加修改操作的不丢失。