Memorust

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

  1. Append na escrita: comandos de escrita (como SET, DEL, SETEX) são serializados e anexados ao AOF.
  2. Escritor bufferizado: as escritas passam por um escritor bufferizado para evitar uma syscall por comando.
  3. fsync periódico: o buffer é descarregado e sofre fsync aproximadamente uma vez por segundo, seguindo a política appendfsync everysec do Redis. Isso troca no máximo ~1 segundo de escritas por uma throughput muito maior.
  4. 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:

AOFREWRITE

Isso 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.

Nesta página