Configuração persistente AOF
# Se abrir um
appendonly yes
# File name
appendfilename "appendonly.aof"
# Modo de sincronização
appendfsync everysec
# aof Se deve sincronizar durante a reescrita
no-appendfsync-on-rewrite no
# Configuração do acionador de reescrita
auto-aof-rewrite-percent 100
auto-aof-rewrite-min-size 64 MB
# O que fazer se houver um erro ao carregar aof
aof-load-truncated yes # yes significa que se houver um problema com o arquivo aof tail, escreva um registro de log e continue a execução. não significa pedir para escrever e escrever depois de esperar pelo reparo
# Estratégia de reescrita de arquivo
aof-rewrite-incremental-fsync yes
-
Existem três modos de sincronização appendfsync: Em geral, a configuração everysec é adotada , e uma escolha equilibrada é feita em dados e segurança, e a perda de dados é de até 1s.
-
sempre: sincroniza cada comando de gravação para um de imediatamente, que é lento, mas seguro
-
everysec: sincronizar uma vez a cada segundo, o que é um compromisso
-
não: o Redis não faz o processamento, é muito rápido, mas também é o menos seguro
-
-
A visão AOF de todo o processo pode ser dividida aproximadamente em duas etapas, a etapa é escrever o comando em tempo real (se estiver
appendfsync everysec
configurado, haverá perda), a segunda etapa é uma reescrita do arquivo aof.-
degrau:
-
Comando write = "Append to aof_buf =" Sincronizar aof disco chamando a função flushAppendOnlyFile por meio de evento de tempo
-
-
o motivo:
-
A gravação em tempo real no disco trará IO de disco muito alto, afetando o desempenho geral
-
-
-
Análise da eficiência e segurança da persistência AOF
sempre: Cada loop de evento de tempo grava todo o conteúdo do buffer AOF_BUF no arquivo AOF e sincroniza o arquivo AOF.Esta é a maneira mais segura, mas a operação do disco e o atraso de bloqueio são as despesas de E / S.
everysec: Sincronize uma vez a cada segundo, o desempenho e a segurança são relativamente moderados, e também é o método recomendado pelo redis. Se você encontrar uma falha de servidor físico, pode fazer com que o registro AOF seja perdido no último segundo (pode ser uma perda parcial).
não: o Redis não chama diretamente a sincronização de arquivos, mas a entrega ao sistema operacional para processamento. O sistema operacional pode acionar a sincronização de acordo com as condições de preenchimento do buffer / tempo ocioso do canal, etc .; este é um método comum de operação de arquivo. O desempenho é melhor.Quando o servidor físico falha, a quantidade de perda de dados será relacionada à configuração do sistema operacional. A chamada flushAppendOnlyFile em nenhum modo não precisa realizar operações de sincronização