Um artigo resumindo os pontos de conhecimento do Redis

Por que o Redis apareceu novamente baseado no MySQL? Quais são as vantagens do Redis?

  • MySQL é baseado em E/S de disco e Redis é baseado em memória.
    A velocidade de leitura e gravação da memória é muito mais rápida do que a velocidade de leitura e gravação do disco IO, o que pode melhorar bastante o desempenho.

  • vantagem: Baseado em memória, tem alto desempenho, suporta uma ampla gama de tipos de dados, suporta todas as linguagens de programação convencionais, como python, Java, etc., suporta persistência de dados (mecanismo ROB AOF), suporta replicação mestre-escravo, suporta modo cluster e suporta modo sentinela.

  • Redis é um banco de dados não relacional em formato chave-valor

Comandos básicos suportados pelo Redis

  • SET adiciona pares chave-valor
  • GET obtém o par chave-valor
  • EXISTS pares de valores-chave de consulta
  • DEL exclui par chave-valor
  • FLUSHALL exclui todas as chaves
  • CHAVES * Consulta todas as chaves
  • Tempo de expiração da chave de visualização TTL
  • EXPIRE define o tempo de expiração da chave

Estruturas de dados suportadas pelo Redis

1 corda

  • Redis usa String para armazenamento por padrão.
  • Todos os comandos String são consistentes com os comandos básicos

2 Lista

  • A estrutura de dados subjacente é um deque
  • Os comandos começam com L
  • Comandos exclusivos: LPUSH (enfileirar a partir da esquerda) LPOP (desenfileirar a partir da esquerda) LRANGE (gerar a fila a partir da esquerda) LLEN (comprimento da fila) LTRIM (reter alguns elementos da fila contando a partir da esquerda) RPUSH (enfileirar a partir da direita )…

3 Conjunto

  • Conjunto de desduplicação não ordenada
  • Os comandos começam com S
  • Comandos exclusivos: SADD (adicionar elemento) SREM (remover elemento) SISMEMBER (elemento de consulta)
  • Operações de conjunto de suporte, interseção e união, etc.

4 conjunto classificado

  • Conjunto de desduplicação solicitado
  • Os comandos começam com Z
  • Cada elemento em Zset está associado a uma pontuação do tipo ponto flutuante e, em seguida, os elementos são classificados de acordo com a pontuação, de pequeno a grande.
  • Os elementos em Zset são únicos, mas frações de elementos podem ser duplicadas
  • Comando exclusivo: tecla ZRANGE 0 -1 WITHSCORES (exibir todos os membros + pontuações) ZRANK (ver a classificação dos membros do menor ao maior)

5 Hash

  • Os comandos começam com H
  • O próprio Redis é um par de valores-chave, que equivale ao valor do par de valores-chave sendo um par de valores-chave.

6 Fila de mensagens de fluxo

  • Os comandos começam com X
  • Comando exclusivo: agrupar consumidores e criar consumidores) XINFO (ver informações do grupo de consumidores)

7 Geoespacial Geoespacial

  • Novos recursos da versão Redis3.2
  • Uma estrutura de dados especialmente usada para armazenar informações de localização geográfica
  • Os comandos começam com GEO
  • Suporta operações de cálculo de localização geográfica
  • Comandos exclusivos: GEOPOS (encontrar a longitude e latitude de uma cidade) DEODIST (calcular a distância em linha reta de uma cidade) GEOSEARCH (consultar cidades dentro de um determinado intervalo centrado em uma determinada cidade)

8 Bitmap Bitmap

  • Uma matriz de 01, o subscrito representa o deslocamento
  • O comando começa com BIT
  • Suporta operações de bits
  • Cenários aplicáveis: registre o status de check-in do usuário, o status online e se ele gosta ou não

9 Campo de bits campo de bits

  • Os comandos começam com BITFIELD
  • Cenários aplicáveis: gravação de informações do jogador

10HiperLogLog

  • Um algoritmo para fazer estatísticas de cardinalidade, ou seja, calcular o número de elementos únicos em um conjunto
  • Os comandos começam com PF
  • Princípio: Algoritmo aleatório
  • Vantagens: ocupa pouca memória
  • Desvantagens: Existem erros
  • Cenários aplicáveis: trabalhos estatísticos que não exigem alta precisão, mas possuem grande quantidade de dados, como contar o número de pesquisas por uma determinada palavra

O Redis é de thread único ou multithread?

  • O Redis sempre tendeu a usar um único thread, o que evita a troca frequente de threads, o que é uma de suas vantagens.
  • Antes da versão 4.0, era completamente single-thread.
  • Após a versão 4.0, o thread principal é de thread único e também há threads de segundo plano (processamento de dados sujos, liberação de links inúteis, exclusão de chaves grandes, etc.)
  • Após a versão 6.0, a execução do comando é de thread único e existem outros threads (processamento de leitura e gravação de dados, análise de protocolos)

modelo publicar-assinar

  • comando de publicação para enviar mensagens para o canal especificado
  • Comando de inscrição, inscreva-se no canal especificado
  • deficiência: a mensagem não pode ser persistida e as mensagens históricas não podem ser gravadas.

Qual é a diferença entre transações no Redis e transações em bancos de dados relacionais?

  • Uma transação é uma coleção de uma série de comandos. Depois que a transação é iniciada, todos os comandos são colocados na fila e empacotados juntos para iniciar uma solicitação para executar a transação. Vários comandos podem ser executados em uma solicitação.
  • Comando MULTI inicia transação
  • Transação de execução de comando EXEC
  • As transações relacionais sãoátomoOperação, todos os comandos são bem-sucedidos ou falham
  • transações não relacionaisnão átomosOperação, a falha na execução de qualquer comando não impedirá que o próximo comando continue a ser executado.

Qual é a diferença entre os dois métodos de persistência, RDB e AOF? Qual é melhor usar?

Instantâneo RDB (banco de dados Redis)

  • A cada intervalo de tempo fixo, o instantâneo de dados na memória é gravado no disco, ou seja, o ROB salva uma cópia completa dos dados em um determinado momento.
  • vantagem: Velocidade de recuperação rápida, adequada para backup
  • deficiência: Se o servidor cair repentinamente, os dados após o último instantâneo serão perdidos e a persistência em tempo real não será possível.
  • Método de disparo: 1. Gatilho automático 2. Comando salvar, durante a execução do comando salvar, redis não pode fazer outras coisas 3. Comando bgsave, criar um subprocesso especificamente para tirar instantâneos, durante a criação do subprocesso, redis não pode fazer outras coisas, mas tirar fotos Você pode fazer outras coisas durante este período

Log AOF (arquivo somente anexado)

  • Ao executar um comando, ele grava o comando na memória e no AOF ao mesmo tempo. Quando o Redis reinicia, ele usa os comandos do AOF para reconstruir o banco de dados. Ou seja, AOF é um log que salva todos os comandos executados.
  • vantagem: Obtenha persistência em tempo real
  • deficiência: O arquivo é muito grande, a velocidade de recuperação é lenta e a eficiência de inicialização é baixa.

Cada um tem suas próprias vantagens. A persistência híbrida é a melhor, ou seja, na forma de ROB + AOF incremental. O arquivo AOF salva apenas o último snapshot no comando de execução neste momento. Quando o Redis reinicia, o arquivo ROB é carregado primeiro e, em seguida, o arquivo AOF incremental é reproduzido, o que evita que o ROB seja persistido em tempo real e evita que os arquivos AOF sejam muito grandes.

replicação mestre-escravo

  • Copie dados de um servidor mestre redis para outros servidores escravos redis
  • Modo de cluster redis de baixo nível
  • Um nó mestre pode ter vários nós escravos e um nó escravo pode ter apenas um nó mestre.
  • Os dados são replicados em uma direção, apenas de mestre para escravo, gravações de mestre e leituras de escravos
  • O método de sincronização de dados pode ser cópia completa ou cópia parcial.
  • vantagem: Backup dinâmico de dados, recuperação de falhas, balanceamento de carga (a separação leitura-gravação pode compartilhar a carga do servidor), pedra angular da alta disponibilidade (a base do modo sentinela e cluster)
  • deficiência: A falha do nó mestre requer intervenção manual (pode ser resolvida pelo modo sentinela) e a capacidade de gravação do nó mestre é limitada (pode ser resolvida pelo modo distribuído)

Modo Sentinela Sentinela

  • Failover automático, nenhuma intervenção manual é necessária quando o nó mestre falha durante o processo de replicação mestre-escravo
  • Ele é executado no cluster Redis como um processo independente e monitora a operação dos servidores. Se um problema for encontrado em um nó, ele notificará outros nós através do modo de publicação e assinatura. Se o nó mestre falhar, um nó escravo será atualizado para um novo nó mestre, e então outros escravos serão notificados.O nó mudou o nó mestre.
  • Offline subjetivo e offline objetivo. Offline subjetivo significa que o nó sentinela pensa que há um problema com um determinado nó. Offline objetivo significa que mais de um certo número de nós sentinela pensam que há um problema com o nó mestre.
  • Como escolher um novo nó mestre? Obtenha a lista de nós, primeiro filtre os nós não íntegros, depois selecione os nós com a prioridade mais alta, depois selecione os nós com o maior deslocamento de replicação (indicando os dados mais completos) e, em seguida, selecione o nó com o menor runid (indicando o mais antigo comece)
  • O nó sentinela é um processo e pode falhar, então geralmente 3 sentinelas são usadas e uma é eleita.Sentinela da LiderançaTrabalhe, escolha um novo líder sentinela depois que o líder falhar.

Cluster Redis

  • Partição/fragmentação de dados: A função principal do cluster. O cluster dispersa dados em vários nós. Por um lado, ele ultrapassa o limite de tamanho de memória da única máquina Redis e aumenta muito a capacidade de armazenamento. Por outro lado, cada nó mestre pode fornecer serviços externos de leitura e gravação, o que aumenta muito melhora a capacidade de resposta do cluster.
  • Alta disponibilidade: O cluster suporta replicação mestre-escravo e failover automático do nó mestre (semelhante ao Sentinel).Quando qualquer nó falha, o cluster ainda pode fornecer serviços para o mundo externo.

Como particionar dados em um cluster?

  • Ou seja, quando você obtém uma chave (dados), em qual nó do cluster você deve colocá-la?
  • O particionamento de dados é feito durante a criação do cluster
  • O número de nós deve ser pelo menos 6 para garantir um cluster completo e altamente disponível.

Nó leva partição residual

  • Pegue o restante do valor hash da chave ou ID do usuário para determinar para qual nó os dados serão mapeados.
  • deficiência: Quando o número de nós muda, como expansão ou redução de nós, todos os relacionamentos de mapeamento de nós de dados precisam ser recalculados, o que levará à nova migração de dados.

Particionamento de hash consistente

  • Todo o espaço de valores de hash é organizado em um anel virtual e, em seguida, o endereço IP ou nome do host do nó do cluster é criptografado e colocado no anel. Quando obtemos uma chave, primeiro fazemos o mesmo valor de hash para a chave para determinar sua posição no anel e, em seguida, "caminhamos" no anel no sentido horário. Quando encontramos o primeiro nó no anel, colocamos o chave colocada em a.
  • vantagem: adicionar e excluir nós afeta apenas nós adjacentes no anel hash e não tem impacto em outros nós.
  • deficiência: Quando os nós estão distribuídos de forma desigual no anel, a pressão sobre alguns nós de cache será maior. Quando um nó falha, todo o acesso aos dados realizado por este nó será movido para o próximo nó, o que pressionará o próximo nó.

partição de slot virtual

  • O cluster Redis usa esta solução
  • Com base no particionamento de hash consistente, oNós virtuais, chamados slots(slot). No particionamento hash consistente usando slots, um nó é dividido em vários slots.Slots são a unidade básica de gerenciamento e migração de dados.
  • Os slots separam o relacionamento entre os dados e os nós reais, e adicionar ou remover nós tem pouco impacto no sistema. Quando um nó é excluído, os vários slots sob o nó podem distribuir uniformemente os dados para os nós restantes, evitando o problema de todos os dados do nó serem acumulados no próximo nó.

Dimensionamento de cluster?

  • Expansão: aloque um certo número de slots e dados para o novo nó
  • Redução: aloque slots e dados para outros nós e, em seguida, coloque o nó a ser excluído offline.

Como garantir que os dados do cache e do banco de dados sejam consistentes?

Como garantir a consistência entre cache local e cache distribuído?

Como lidar com teclas de atalho e teclas grandes?

Gasoduto Redis?

Acho que você gosta

Origin blog.csdn.net/weixin_46838605/article/details/132542860
Recomendado
Clasificación