Qual é o nome completo do Redis RDB? Modo de operação de persistência de dados de memória Redis RDB

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.

Qual é o nome completo do Redis RDB? Modo de operação de persistência de dados de memória Redis RDB

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:savebgsave.

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:

  1. Modificar manualmente o arquivo de configuração do Redis
  2. 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:

  1. Sua vantagem é que o arquivo de armazenamento é pequeno e a recuperação de dados é mais rápida quando o Redis é iniciado.
  2. 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.

发表 评论

Seu endereço de e-mail não será publicado. 必填 项 已 用 * 标注

Voltar ao Topo