Compartilhamento de tecnologia

Perguntas da entrevista sobre operação e manutenção do Redis

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Para ajudar a todos na jornada da entrevista, para os alunos que ainda não têm certeza sobre o Redis, compilamos 40 perguntas comuns da entrevista do Redis para que você não entre em pânico durante a entrevista e se esforce para conseguir a oferta!

1. O que é Redis?

Redis é totalmente de código aberto e gratuito, está em conformidade com o protocolo BSD e é um banco de dados de valores-chave de alto desempenho.

O Redis tem as três características a seguir em comparação com outros produtos de cache de valor-chave:

  • Redis oferece suporte à persistência de dados. Ele pode salvar os dados da memória no disco e carregá-los novamente para uso ao reiniciar.

  • O Redis não apenas oferece suporte a dados simples do tipo chave-valor, mas também fornece armazenamento de estruturas de dados como lista, conjunto, zset e hash.

  • Redis suporta backup de dados, ou seja, backup de dados no modo mestre-escravo.

Vantagens do Redis:

  • Desempenho extremamente alto: o Redis pode ler a uma velocidade de 110.000 vezes/s e escrever a uma velocidade de 81.000 vezes/s.

  • Tipos de dados ricos: Redis suporta operações de tipo de dados Strings, Listas, Hashes, Conjuntos e Conjuntos Ordenados em casos binários.

  • Atômica: todas as operações no Redis são atômicas, o que significa que são executadas com sucesso ou nem sequer são executadas. As operações individuais são atômicas. Operações múltiplas também suportam transações, ou seja, atomicidade, envolvidas pelas instruções MULTI e EXEC.

  • Recursos avançados: Redis também suporta publicação/assinatura, notificações, expiração de chave e outros recursos.

Qual a diferença entre o Redis e outros armazenamentos de valores-chave?

Redis possui estruturas de dados mais complexas e fornece operações atômicas sobre elas. Este é um caminho evolutivo diferente de outros bancos de dados. Os tipos de dados do Redis são baseados em estruturas de dados básicas e são transparentes para os programadores, sem a necessidade de abstrações adicionais.

O Redis é executado na memória, mas pode ser persistido no disco, portanto, há uma compensação de memória ao realizar leitura e gravação em alta velocidade de diferentes conjuntos de dados, porque a quantidade de dados não pode ser maior que a memória do hardware. Outra vantagem dos bancos de dados na memória é que, em comparação com as mesmas estruturas de dados complexas no disco, a operação na memória é muito simples, de modo que o Redis pode fazer muitas coisas com forte complexidade interna. Além disso, em termos de formato de disco, eles são compactos e gerados por anexos, pois não requerem acesso aleatório.

2. Quais são os tipos de dados do Redis?

Redis oferece suporte a cinco tipos de dados: string (string), hash (hash), lista (lista), conjunto (conjunto) e conjunto zsetsorted (conjunto ordenado).

Os mais comumente usados ​​em nossos projetos reais são string e hash. Se você for um usuário intermediário e avançado do Redis, também precisará adicionar as seguintes estruturas de dados HyperLogLog, Geo e Pub/Sub.

Se você disser que também brincou com o Módulo Redis, como BloomFilter, RedisSearch e Redis-ML, os olhos do entrevistador começarão a brilhar.

3. Quais são os benefícios de usar o Redis?

  • É rápido porque os dados são armazenados na memória, semelhante ao HashMap. A vantagem do HashMap é que a complexidade de tempo de pesquisa e operação é O1).

  • Suporta tipos de dados ricos, incluindo string, lista, conjunto, Zset, hash, etc.

  • Suporta transações e todas as operações são atômicas. A chamada atomicidade significa que todas as alterações nos dados são executadas ou não são executadas.

  • Recursos avançados, podem ser usados ​​para armazenamento em cache, mensagens, configuração do tempo de expiração por chave, serão excluídos automaticamente após a expiração

4. Quais são as vantagens do Redis em relação ao Memcached?

  • Todos os valores no Memcached são strings simples e o Redis, como seu substituto, oferece suporte a classes de dados mais ricas.

  • Redis é muito mais rápido que Memcached

  • Redis pode persistir seus dados

5. Quais são as diferenças entre Memcache e Redis?

  • O método de armazenamento Memecache armazena todos os dados na memória. Ele irá travar após falha de energia. Os dados não podem exceder o tamanho da memória. O Redis é parcialmente armazenado no disco rígido, o que garante a durabilidade dos dados.

  • Tipos de suporte de dados O suporte do Memcache para tipos de dados é relativamente simples. Redis possui tipos de dados complexos.

  • Os modelos subjacentes utilizados são diferentes nos seus métodos de implementação subjacentes e protocolos de aplicação para comunicação com os clientes. O Redis constrói diretamente seu próprio mecanismo de VM, porque se o sistema geral chamar funções do sistema, ele perderá um certo tempo para mover e solicitar.

6. O Redis é de processo único e thread único?

Redis é um processo único e thread único. O Redis usa tecnologia de fila para transformar o acesso simultâneo em acesso serial, eliminando a sobrecarga do controle serial do banco de dados tradicional.

7. Qual é a capacidade máxima de um armazenamento inteligente do tipo string?

512 milhões.

8. Qual é o mecanismo de persistência do Redis? Quais são as vantagens e desvantagens de cada um?

O Redis fornece dois mecanismos de persistência, mecanismos RDB e AOF:

Método de persistência RDB (Redis DataBase): refere-se ao registro de todos os pares de valores-chave do banco de dados Redis em um modo semipersistente usando um instantâneo do conjunto de dados e à gravação dos dados em um arquivo temporário em um determinado momento após a persistência. estiver concluído, use isto O arquivo temporário substitui o último arquivo persistido para obter a recuperação de dados.

vantagem:

  • Existe apenas um arquivo dump.rdb, que é conveniente para persistência.

  • A tolerância a desastres é boa, um arquivo pode ser salvo em um disco seguro.

  • Para maximizar o desempenho, bifurque o processo filho para concluir a operação de gravação e permitir que o processo principal continue processando comandos, para que a E/S seja maximizada. Use um subprocesso separado para persistência e o processo principal não executará nenhuma operação de IO, garantindo o alto desempenho do Redis.

  • Quando o conjunto de dados é grande, a eficiência de inicialização é maior que AOF.

Desvantagens: baixa segurança de dados. O RDB persiste em intervalos. Se o Redis falhar durante a persistência, ocorrerá perda de dados.Portanto, este método é mais adequado quando os requisitos de dados não são rigorosos.

Método de persistência AOF (arquivo somente anexo): significa que todos os registros de linha de comando são armazenados de forma totalmente persistente e armazenados como arquivos aof no formato do protocolo de solicitação de comando Redis.

vantagem:

  • Para segurança dos dados, a persistência AOF pode ser configurada com o atributo appendfsync. Se houver sempre, cada operação de comando será registrada no arquivo AOF.

  • Ao gravar arquivos no modo anexado, mesmo que o servidor fique inativo no meio, o problema de consistência dos dados pode ser resolvido por meio da ferramenta redis-check-aof.

  • O modo de reescrita do mecanismo AOF. Antes de o arquivo AOF ser reescrito (os comandos serão mesclados e reescritos quando o arquivo for muito grande), você pode excluir alguns dos comandos (como flushall que foi operado acidentalmente).

deficiência:

  • Os arquivos AOF são maiores que os arquivos RDB e são mais lentos para restaurar.

  • Quando o conjunto de dados é grande, a eficiência de inicialização é inferior ao RDB.

9. Problemas e soluções comuns de desempenho do Redis

  • É melhor que o Master não grave instantâneos de memória. Se o Master gravar instantâneos de memória, o comando save agendará a função rdbSave, que bloqueará o trabalho do thread principal. o serviço será suspenso intermitentemente.

  • Se os dados forem importantes, um Slave habilita os dados de backup AOF e a política é configurada para sincronizar um dado por segundo.

  • Para a velocidade da replicação mestre-escravo e a estabilidade da conexão, é melhor que o mestre e o escravo estejam na mesma LAN.

  • Tente evitar adicionar escravos a um banco de dados mestre estressado.

  • Não use uma estrutura gráfica para replicação mestre-escravo. É mais estável usar uma estrutura de lista vinculada unidirecional, ou seja: Mestre.