Persistência (AOF)
Como o Memorust persiste dados com um Append Only File.
O Memorust persiste dados usando um Append Only File (AOF): todo comando de escrita é anexado a um log em disco. Na inicialização, o log é reproduzido (replay) para reconstruir o estado em memória.
Como funciona
- Append na escrita: comandos de escrita (como
SET,DEL,SETEX) são serializados e anexados ao AOF. - Escritor bufferizado: as escritas passam por um escritor bufferizado para evitar uma syscall por comando.
fsyncperiódico: o buffer é descarregado e sofrefsyncaproximadamente uma vez por segundo, seguindo a políticaappendfsync everysecdo Redis. Isso troca no máximo ~1 segundo de escritas por uma throughput muito maior.- Replay na inicialização: quando o servidor inicia, ele lê o AOF e reproduz os comandos para restaurar o conjunto de dados.
Rewrite do AOF (compactação)
Com o tempo, o AOF acumula comandos redundantes (por exemplo, muitos SET na
mesma chave, ou chaves que depois foram removidas). O comando AOFREWRITE
compacta o log, reescrevendo-o no conjunto mínimo de comandos necessários para
reproduzir o estado atual:
AOFREWRITEIsso mantém o arquivo em disco pequeno e torna o replay de inicialização mais rápido.
Trade-offs
A estratégia everysec significa que uma falha pode perder no máximo cerca de
um segundo de escritas. Esse é o mesmo padrão que o Redis usa, e é um equilíbrio
deliberado entre durabilidade e performance de escrita. Veja
Benchmarks para o impacto do escritor bufferizado.