1. Prefácio
Recentemente, o Redis tem sido usado como cache no projeto para facilitar o compartilhamento de dados entre múltiplos processos de negócios. Como os dados do Redis são armazenados na memória, se a persistência não estiver configurada, todos os dados serão perdidos após o reinício do Redis, então você precisa ativar a função de persistência do Redis para salvar os dados no disco, e quando o Redis for reiniciado, pode recuperar os dados do disco. O Redis oferece duas formas de persistir: persistência no RDB (o princípio é despejar os registros do banco de dados de Reids na memória para a persistência do RDB no disco) e a outra é a persistência AOF (o princípio é escrever os logs de operações de Reids em um arquivo na forma de um apêndice). Então, qual é a diferença entre esses dois métodos de persistência e como escolher mudá-los? A maioria das coisas que leio na Internet explica como configurar e usar esses dois métodos, mas não há introdução à diferença entre os dois e em quais cenários de aplicação usar.
2. A diferença entre os dois
Persistência RDB refere-se à gravação de um snapshot do conjunto de dados na memória em disco dentro de um intervalo de tempo especificado, e o processo operacional real é bifurcar um subprocesso, primeiro escrever o conjunto de dados em um arquivo temporário, depois substituir o arquivo anterior após o sucesso da gravação, armazenando-o com compressão binária.
A persistência AOF registra cada operação de escrita e exclusão processada pelo servidor na forma de um log, e a operação de consulta não será registrada, mas será registrada em texto, e você pode abrir o arquivo para ver o registro detalhado da operação.
3. Vantagens e desvantagens dos dois
Quais são as vantagens do RDB?
1). Depois de usá-lo, todo o seu banco de dados Redis conterá apenas um arquivo, o que é perfeito para backups de arquivos. Por exemplo, você pode querer arquivar as últimas 24 horas a cada hora, e também arquivar os últimos 30 dias todos os dias. Com essa estratégia de backup, podemos facilmente nos recuperar em caso de uma falha catastrófica do sistema.
2). RDB é uma ótima escolha para recuperação de desastres. Porque podemos facilmente comprimir um único arquivo e transferi-lo para outro meio de armazenamento.
3). Maximizar o desempenho. Para o processo de serviço Redis, a única coisa que ele precisa fazer ao iniciar a persistência é desfazer os processos filhos, e então os processos filhos completarão essas tarefas de persistência, o que pode evitar muito que o processo de serviço execute operações de E/S.
4). Comparado ao mecanismo de AOF, se o conjunto de dados for grande, a eficiência inicial do RDB será maior.
Quais são as desvantagens do RDB?
1). Se você quer garantir alta disponibilidade de dados, ou seja, evitar a perda de dados ao máximo, então o RDB não será uma boa escolha. Porque, uma vez que o sistema cai antes da persistência programada, os dados que foram previamente gravados no disco serão perdidos.
2). Como o RDB auxilia na persistência dos dados por meio de subprocessos de fork, se o conjunto de dados for grande, pode fazer com que todo o servidor pare o serviço por centenas de milissegundos, ou até 1 segundo.
Quais são as vantagens do AOF?
1). Esse mecanismo pode trazer maior segurança de dados, ou seja, persistência de dados. Existem 3 estratégias de sincronização fornecidas no Redis, a saber: sincronização por segundo, sincronização por modificação e dessincronização. Na verdade, a sincronização por segundo também é feita de forma assíncrona, e sua eficiência também é muito alta; a diferença é que, uma vez que o sistema cai do ar, os dados modificados serão perdidos nesse segundo. E toda vez que uma modificação é sincronizada, podemos pensar nela como persistência de sincronização, ou seja, toda alteração de dados que ocorre é imediatamente registrada no disco. É previsível que esse método seja o menos eficiente. Quanto à ausência de sincronização, não há necessidade de dizer mais, acho que todos entendem corretamente.
2). Como o mecanismo adota o modo de anexação para gravar arquivos de log, mesmo que haja um tempo de inatividade durante o processo de escrita, o conteúdo já existente no arquivo de log não será destruído. No entanto, se escrevermos apenas metade dos dados e o sistema travar desta vez, não se preocupe, podemos usar a ferramenta redis-check-aof para nos ajudar a resolver o problema de consistência de dados antes do próximo início do Redis.
3). Se o log for muito grande, o Redis pode ativar automaticamente o mecanismo de reescrita. Ou seja, o Redis grava continuamente os dados de modificação no arquivo de disco antigo no modo de anexação, e o Redis também criará um novo arquivo para registrar quais comandos de modificação são executados durante esse período. Portanto, a segurança dos dados pode ser melhor garantida ao alternar entre reescritas.
4). AOF contém um arquivo de log claro e fácil de entender que registra todas as modificações. Na verdade, também podemos completar a reconstrução dos dados por meio desse arquivo.
Quais são as desvantagens do OV?
1). Para o mesmo número de conjuntos de dados, os arquivos OF geralmente são maiores que os arquivos RDB. O RDB recupera grandes conjuntos de dados mais rápido que o AOF.
2). Dependendo da estratégia de sincronização, o AOF tende a ser mais lento que o RDB em termos de eficiência de execução. Em resumo, a eficiência da política de sincronização por segundo é relativamente alta, e a eficiência da política de desabilitação síncrona é tão eficiente quanto a do RDB.
Os critérios para escolher os dois são se o sistema está disposto a sacrificar algum desempenho em troca de maior consistência de cache (AOF), ou se está disposto a não habilitar backups em troca de maior desempenho quando as operações de escrita são frequentes, e então fazer backups (RDB) ao executar Save manualmente. RDB tem um significado final mais consistente. No entanto, o ambiente de produção é na verdade mais uma combinação dos dois.
4. Configurações comuns
Configuração de persistência RDB
O Redis despeja um snapshot do conjunto de dados no arquivo dump.rdb. Além disso, também podemos modificar a frequência dos snapshots de dump do servidor Redis através do arquivo de configuração; após abrir o arquivo 6379.conf, buscamos por save, e podemos ver as seguintes informações de configuração:
Configuração persistente AOF
Existem três maneiras de sincronizar no perfil Rederis, que são:
Configuração completa:
Um novo arquivo "appendonly.aof" será criado no diretório de teste, conforme segue:
|