Prática de persistência do Redis

Índice

Ⅰ. Persistência RDB

1.1 Tempo de Execução

1.2 Princípio da RDB

1.3 Resumo do RDB

Ⅱ. Persistência AOF

2.1 Configuração AOF

2.2 Reescrita de arquivo AOF

Ⅲ. Comparação entre RDB e AOF


Para evitar a perda de dados no cache distribuído redis, o Redis fornece dois esquemas de persistência:

  • persistência RDB

  • persistência AOF

Ⅰ. Persistência RDB

        O nome completo do RDB é arquivo Redis Database Backup (arquivo de backup de dados Redis), também conhecido como instantâneo de dados Redis. Simplificando, todos os dados na memória são gravados no disco. Quando a instância do Redis falhar e reiniciar, leia o arquivo de instantâneo do disco e restaure os dados. Os arquivos de instantâneo são chamados de arquivos RDB, que são salvos no diretório em execução atual por padrão.

1.1 Tempo de Execução

A persistência RDB é executada em quatro situações:

  • Execute o comando salvar

  • Execute o comando bgsave

  • Quando o Redis está inativo

  • Quando uma condição RDB é acionada

① salvar comando  

Execute o seguinte comando para executar um RDB imediatamente:

O comando salvar fará com que o processo principal execute o RDB e todos os outros comandos serão bloqueados durante esse processo. Só pode ser usado durante a migração de dados.

② comando bgsave 

O seguinte comando pode executar o RDB de forma assíncrona:

Depois que esse comando for executado, um processo independente será iniciado para concluir o RDB e o processo principal poderá continuar processando as solicitações do usuário sem ser afetado.

③ Parar 

Quando o Redis estiver inativo, um comando de salvamento será executado para obter a persistência do RDB.  

④ Acionar condições RDB

O Redis possui um mecanismo interno para acionar o RDB, que pode ser encontrado no arquivo redis.conf no seguinte formato:  

# 900秒内,如果至少有1个key被修改,则执行bgsave , 如果是save "" 则表示禁用RDB
save 900 1  
save 300 10  
save 60 10000 

Outras configurações do RDB também podem ser definidas no arquivo redis.conf:

# 是否压缩 ,建议不开启,压缩也会消耗cpu,磁盘的话不值钱
rdbcompression yes

# RDB文件名称
dbfilename dump.rdb  

# 文件保存的路径目录
dir ./ 

1.2 Princípio da RDB

No início do bgsave, o processo principal será bifurcado para obter o processo filho, e o processo filho compartilhará os dados de memória do processo principal. Após a conclusão da bifurcação, leia os dados da memória e grave-os no arquivo RDB.

Fork usa a tecnologia copy-on-write:

  • Quando o processo principal executa uma operação de leitura, ele acessa a memória compartilhada;

  • Quando o processo principal executa uma operação de gravação, uma cópia dos dados é copiada e a operação de gravação é executada.

1.3 Resumo do RDB

O processo básico de bgsave no modo RDB?

  • Fork o processo principal para obter um processo filho, compartilhando espaço de memória

  • O processo filho lê os dados da memória e grava novos arquivos RDB

  • Substitua arquivos RDB antigos por novos arquivos RDB

Quando o RDB será executado? O que significa salvar 60 1000?

  • O padrão é quando o serviço é interrompido

  • Isso significa que o RDB é acionado quando pelo menos 1.000 modificações são realizadas em 60 segundos

Desvantagens do RDB?

  • O intervalo de execução do RDB é longo e há risco de perda de dados entre duas gravações do RDB

  • Leva tempo para bifurcar subprocessos, compactar e gravar arquivos RDB

Ⅱ. Persistência AOF

AOF, Inglês é Append Only File, ou seja, somente arquivos que não podem ser reescritos podem ser anexados. Cada comando de gravação processado pelo Redis será registrado no arquivo AOF, que pode ser considerado como um arquivo de log de comando.

2.1 Configuração AOF

O AOF está desativado por padrão, você precisa modificar o arquivo de configuração redis.conf para ativar o AOF:  

# 是否开启AOF功能,默认是no
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"

A frequência de gravação do comando AOF também pode ser configurada através do arquivo redis.conf:

# 表示每执行一次写命令,立即记录到AOF文件
appendfsync always 
# 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案
appendfsync everysec 
# 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no

Comparação de três estratégias:

2.2 Reescrita de arquivo AOF

Por ser um comando de gravação, o arquivo AOF será muito maior que o arquivo RDB. E o AOF registrará várias operações de gravação na mesma chave, mas apenas a última operação de gravação é significativa. Ao executar o comando bgrewriteaof, o arquivo AOF pode ser reescrito para obter o mesmo efeito com o menor número de comandos.

Como mostrado na figura, AOF originalmente tem três comandos, mas  set num 123 和 set num 666 todos eles são operações em num. A segunda vez sobrescreverá o primeiro valor, então não faz sentido gravar o primeiro comando.

Então, depois de reescrever o comando, o conteúdo do arquivo AOF é:mset name jack num 666

O Redis também reescreverá automaticamente o arquivo AOF quando o limite for acionado. Limites também podem ser configurados em redis.conf:

# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写 
auto-aof-rewrite-min-size 64mb 

Ⅲ. Comparação entre RDB e AOF

Ambos RDB e AOF têm suas próprias vantagens e desvantagens.Se os requisitos de segurança de dados forem altos, eles geralmente são usados ​​em combinação         no desenvolvimento real .

Acho que você gosta

Origin blog.csdn.net/weixin_52850476/article/details/125078440
Recomendado
Clasificación