Reids são principalmente duas formas de persistência: RDB e AOF
- RDB (Redis DataBase): o RDB salva os dados do instantâneo antes de um determinado momento.
- AOF (arquivo somente anexo): todos os registros da linha de comando são completamente persistentes e armazenados como arquivos AOF no formato do protocolo de solicitação do redis.
- Persistência híbrida (4.x): Ao realizar a regravação de AOF, o processo filho salva o instantâneo de dados no ponto de tempo atual no formato de arquivo RDB e salva os comandos acumulados do processo pai no formato AOF.
Um, instantâneo RDB
Existem dois métodos de gatilho
1. Por meio de parâmetros de configuração:
A geração de instantâneos é executada quando o número de comandos executados em um determinado período excede o limite.
save 900 1
save 300 10
save 60 10000
或
save '' #表示关闭RDB快照。注意:主从复制的主节点永远关不掉RDB,配置了也没用。
Indica quantos segundos foram excedidos, quantos comandos foram executados e a geração do instantâneo será executada se eles forem satisfeitos. Por exemplo: se mais de 10.000 comandos são executados em 60 segundos, a camada inferior chama o comando bgsave para gerar um instantâneo.
2. Execute manualmente o comando bgsave ou salve o comando ou SHUTDOWN para gerar explicitamente um instantâneo
salvar: Use o processo principal para salvar, se a quantidade de dados for grande, o processo principal pode ser bloqueado. Afetará o serviço redis.
bgsave: bifurca um processo filho para salvar. Não afetará o serviço redis. Como mostrado:
Vantagens e desvantagens da persistência RDB
vantagem:
- Boa performance. Use o processo filho para persistência sem afetar o serviço do processo principal.
- Alta eficiência de inicialização. Analise arquivos binários RDB diretamente na inicialização, o que é mais eficiente do que AOF.
Desvantagens:
- A segurança dos dados é baixa . O RDB é persistido em intervalos. Se ocorrer uma falha durante o período, os dados serão perdidos.
- Durante a persistência do RDB, um grande número de operações de gravação geram um grande número de falhas de página e o kernel mantém o copyonwrite copiando páginas anormais, resultando na degradação do desempenho.
Em segundo lugar, persistência AOF
#redis.conf配置通过下面配置开启aof,默认是关闭的
appendonly yes
Depois que o comando é executado, ele será escrito no buffer aof (na memória), e então por meio de uma certa estratégia, e então escrito no arquivo aof
#redis.conf配置同步策略
appendfsync everysec
Existem três estratégias de sincronização:
- não significa esperar que o sistema operacional sincronize o cache de dados com o disco (geralmente o período de sincronização mais longo é 30 segundos)
- sempre significa que fsync () é chamado para gravar dados no disco após cada operação de atualização. Ele afeta muito o desempenho e não pode ser aberto no ambiente de produção.
- everysec sincroniza a cada segundo, o valor padrão
Mecanismo de reescrita AOF
Conforme os comandos continuam a ser gravados em AOF, o arquivo se torna cada vez maior
Existem dois métodos de gatilho
- Gatilho manual: comando bgrewriteaof
- Gatilho automático: os parâmetros auto-aof-rewrite-min-size e auto-aof-rewrite-porcentagem determinam o tempo de disparo
#redis.conf配置
auto-aof-rewrite-percentage 100 表示当前AOF文件空间和上次重写后的AOF文件空间的比值
auto-aof-rewrite-min-size 64mb #表示AOF文件重写时文件最小体积64MB
Vantagens e desvantagens de AOF
vantagem:
- Segurança de dados. Quando a estratégia always é usada, a perda de dados zero pode ser alcançada.
Desvantagens:
- A eficiência de inicialização é baixa. Quando o arquivo aof é grande, a eficiência de inicialização é inferior à do RDB
Três, persistência híbrida
Ativar via configuração aof-use-rdb-preamble yes
Ao carregar, ele primeiro identificará se o arquivo AOF começa com a string REDIS. Em caso afirmativo carregue de acordo com o formato RDB. Após carregar o RDB, continue carregando o restante de acordo com o formato AOF.
O esquema de persistência híbrida leva em consideração a velocidade do RDB e a segurança do AOF