Artigo Diretório
O nome completo do RDB éRedis database.
- Como o nome sugere, RDB é um banco de dados Redis usado para armazenar dados.
- Portanto, por meio da persistência do RDB, os dados armazenados na memória do Redis são gravados no arquivo RDB e salvos no disco para obter a persistência.
- O recurso do Redis é que ele pode persistir dados, ou seja, gravar dados na memória no disco para garantir que nenhum dado seja perdido e também pode carregar dados do disco na memória.

As operações do Redis no início são todas baseadas na memória, então o desempenho é muito alto, mas uma vez que o programa é fechado, os dados são perdidos.
Portanto, precisamos gravar dados na memória no disco em intervalos especificados, que é Snapshot no jargão.
Ao restaurar, o arquivo de instantâneo é gravado diretamente na memória.
Essa também é uma das principais diferenças entre o Redis e o Memcached, pois o Memcached não possui capacidade de persistência.
Para a persistência dos dados de memória do Redis, o Redis nos fornece os seguintes métodos:
- Método Snapshot (RDB, Redis DataBase): grava os dados da memória no disco em formato binário em um determinado momento;
- Append Only File (AOF, Append Only File), registre todos os comandos de operação e anexe ao arquivo em formato de texto;
- Persistência híbrida, um novo método após o Redis 4.0, a persistência híbrida combina as vantagens de RDB e AOF.Ao gravar, primeiro grave os dados atuais no início do arquivo na forma de RDB e, em seguida, salve os comandos de operação subsequentes no arquivo na forma de AOF, o que pode não apenas garantir a velocidade de reinicialização do Redis, mas também reduzir o risco de perda de dados.
Porque cada esquema de persistência tem cenários de uso específicos.
Modo de operação de persistência de dados de memória Redis RDB
- RDB (Redis DataBase) é o processo de gravação de um instantâneo de memória (Snapshot) em um determinado momento no disco em formato binário.
- Os instantâneos de memória são o que dissemos acima.Refere-se ao registro do estado dos dados na memória em um determinado momento.
- Isso é semelhante a tirar uma foto. Quando você tira uma foto de um amigo, uma foto pode gravar instantaneamente todas as imagens do amigo.
- Existem duas maneiras de acionar o RDB: uma é o acionamento manual e a outra é o acionamento automático.
Acionar manualmente o RDB
Existem duas operações para acionar manualmente a persistência:save和bgsave.
A principal diferença entre eles é bloquear ou não a execução do thread principal do Redis.
1. Salvar comando
Executar o comando save no lado do cliente acionará a persistência do Redis, mas também deixará o Redis em estado de bloqueio. Ele não responderá aos comandos enviados por outros clientes até que o RDB seja persistido, portanto, deve ser usado com cautela em o ambiente de produção.
127.0.0.1:6379> save OK 127.0.0.1:6379>
O processo de execução do comando é mostrado na figura
2. comando bgsave
- bgsave (background save) é um background save.
- A maior diferença entre ele e o comando save é que o bgsave bifurca um processo filho para executar a persistência.
- Todo o processo é apenas quando o processo filho é fork.Há apenas um breve bloqueio.
- Depois que o processo filho é criado, o processo principal do Redis pode responder a solicitações de outros clientes.
com o bloqueio de todo o processosavecomparado ao comandobgsaveCommand é obviamente mais adequado para nós usarmos.
127.0.0.1:6379> bgsave Background Saving started # 提示开始后台保存 127.0.0.1:6379>
Acionar RDB automaticamente
Depois de falar sobre o acionamento manual, vamos ver o acionamento automático.Podemos configurar as condições para acionamento automático no arquivo de configuração.
1. salvar mn
- save mn significa que dentro de m segundos, se n chaves forem alteradas, a persistência será acionada automaticamente.Os parâmetros m e n podem ser encontrados no arquivo de configuração do Redis.
- Por exemplo, salvar 60 1 significa que em 60 segundos, desde que uma chave seja alterada, a persistência do RDB será acionada.
- A essência de acionar automaticamente a persistência é que, se as condições de acionamento definidas forem atendidas, o Redis executará automaticamente o comando bgsave uma vez.
Nota: Quando vários comandos save mn são definidos, qualquer condição acionará a persistência.
Por exemplo, definimos os dois comandos save mn a seguir:
save 60 10 save 600 20
- Quando o valor da chave Redis muda 60 vezes em 10 segundos, a persistência será acionada;
- Se a chave do Redis mudar em 60 segundos e o valor mudar menos de 10 vezes, o Redis determinará se a chave do Redis foi modificada pelo menos 600 vezes em 20 segundos e, em caso afirmativo, acionará a persistência.
2. Flush
- O comando flushall é usado para liberar o banco de dados Redis.
- Deve ser usado com cuidado em um ambiente de produção.
- Quando o Redis executa o comando flushall, ele aciona a persistência automática e limpa o arquivo RDB.
3. Gatilho de sincronização mestre-escravo
Na replicação mestre-escravo do Redis, quando o nó escravo executa uma operação de replicação completa, o nó mestre executará o comando bgsave para enviar o arquivo RDB ao nó escravo, este processo aciona automaticamente a persistência do Redis.
O Redis pode consultar os parâmetros de configuração atuais por meio de comandos.
O formato do comando de consulta é:config get xxx
Por exemplo, se você deseja obter a configuração do nome de armazenamento de um arquivo RDB, pode usar config get dbfilename .
O efeito de execução é o seguinte:
127.0.0.1:6379> config get dbfilename 1) "dbfilename" 2) "dump.rdb"
Como o servidor Redis bloqueará ao carregar o arquivo RDB até que o carregamento seja concluído, isso pode levar muito tempo e o site não pode ser acessado.
Se você deseja excluir manualmente o arquivo de cache RDB dump.rdb do Redis, você pode usar o seguinte comando para localizar o caminho de armazenamento do arquivo dump.rdb▼
find / -name dump.rdb
- Em seguida, exclua manualmente o arquivo de cache dump.rdb via SSH.
Redis define a configuração do RDB
Em relação à definição da configuração do RDB, você pode usar as duas maneiras a seguir:
- Modificar manualmente o arquivo de configuração do Redis
- Use as configurações de linha de comando, config set dir "/usr/data" é o comando de armazenamento para modificar o arquivo RDB
Nota: A configuração em redis.conf pode ser obtida através de config get xxx e modificada através de config set xxx value, e o método de modificação manual do arquivo de configuração Redis é globalmente efetivo, ou seja, os parâmetros definidos ao reiniciar o servidor Redis não ser perdido, mas modificado usando o comando , ele será perdido após a reinicialização do Redis.
No entanto, se você quiser modificar manualmente o arquivo de configuração do Redis para entrar em vigor imediatamente, será necessário reiniciar o servidor Redis e o método de comando não requer a reinicialização do servidor Redis.
Recuperação de arquivos RDB
Quando o servidor Redis for iniciado, se o arquivo RDB dump.rdb existir no diretório raiz do Redis, o Redis carregará automaticamente o arquivo RDB para restaurar dados persistentes.
Se não houver arquivo dump.rdb no diretório raiz, mova o arquivo dump.rdb para o diretório raiz do Redis.
Obviamente, há informações de log quando o Redis é iniciado, que mostrará se o arquivo RDB foi carregado.
O servidor Redis bloqueia ao carregar o arquivo RDB até que o carregamento seja concluído.
Agora sabemos que a persistência do RDB é dividida em duas formas: acionamento manual e acionamento automático:
- Sua vantagem é que o arquivo de armazenamento é pequeno e a recuperação de dados é mais rápida quando o Redis é iniciado.
- A desvantagem é que existe o risco de perda de dados.
A recuperação de arquivos RDB também é muito simples, basta colocar os arquivos RDB no diretório raiz do Redis e o Redis carregará e restaurará os dados automaticamente quando for iniciado.
Prós e contras do RDB
1) Vantagens do RDB
O conteúdo do RDB são dados binários, que ocupam menos memória, são mais compactos e são mais adequados como arquivo de backup;
O RDB é muito útil para recuperação de desastres, é um arquivo compactado que pode ser transferido para um servidor remoto mais rapidamente para recuperação do serviço Redis;
O RDB pode melhorar muito a velocidade do Redis, porque o processo principal do Redis bifurca um processo filho para manter os dados no disco.
O processo principal do Redis não executa operações como E/S de disco;
Em comparação com os arquivos de formato AOF, os arquivos RDB são reiniciados mais rapidamente.
2) Desvantagens do RDB
Como o RDB só pode salvar dados em um determinado intervalo de tempo, se o serviço Redis for encerrado acidentalmente no meio, os dados Redis serão perdidos por um período de tempo;
Um processo no qual o RDB requer bifurcações frequentes para mantê-lo no disco usando a subentrada.
Se o conjunto de dados for grande, a bifurcação pode ser demorada e, se o conjunto de dados for grande, o desempenho da CPU é ruim, o que pode fazer com que o Redis não consiga atender clientes por alguns milissegundos ou até mesmo um segundo.
Claro, também podemos desabilitar a persistência para melhorar a eficiência de execução do Redis.
Se você não for sensível à perda de dados, poderá fazer isso quando o cliente se conectar config set save "" Comando para desabilitar a persistência do Redis.
在redis.conf, se emsaveComente todas as configurações no início e a persistência também será desabilitada, mas isso geralmente não é feito.
Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) compartilhado "Qual é o nome completo do Redis RDB? Modo de operação de persistência de dados na memória do Redis RDB, que é útil para você.
Bem-vindo a compartilhar o link deste artigo:https://www.chenweiliang.com/cwl-26677.html
Para descobrir mais truques ocultos🔑, seja bem-vindo ao nosso canal do Telegram!
Compartilhe e curta se você gostou! Seus compartilhamentos e curtidas são nossa motivação contínua!