minhas informações de contato
Correspondência[email protected]
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.