Perguntas da entrevista - artigos redis

1. Quais tipos de dados o Redis suporta?

Cadeia _

Hash _

Lista (lista)

Definir _

zset (conjunto classificado: coleção ordenada)

1. Corda (corda)

Formatar: set key value

O tipo string é binário seguro, o que significa redis

A string pode conter qualquer dado, como jpg

fatia ou objeto serializado 

O tipo string é o tipo de dados mais básico do Redis,

Uma chave pode armazenar até 512 MB

2. Hash

Formatar: hmset name key1 value1 key2 value2

Hash Redis é um conjunto de pares chave-valor (chave => valor)

combinar

Hash Redis é um campo do tipo string e

Tabela de mapeamento de valor, hash é especialmente adequado para armazenamento

objeto

3. Lista (lista)

As listas Redis são simplesmente listas de strings,

Para classificar, você pode adicionar um elemento à lista

cabeça (esquerda) ou cauda (direita)

Formatar: lpush name value

Adicione um elemento string no topo da lista correspondente à chave

Formatar: rpush name value

Adicione um elemento string no final da lista correspondente à chave

Formatar: lrem name index

chave corresponde à contagem e valor de exclusão na lista

mesmo elemento

Formatar: llen name

Retorna o comprimento da lista correspondente à chave

4. Conjunto (coleção)

Formatar: sadd name value

O conjunto do Redis é uma coleção não ordenada de tipos de string

Os conjuntos são implementados com tabelas hash , portanto, adicionando,

A complexidade de exclusão e pesquisa é O(1)

5. ZSet (conjunto classificado: coleção ordenada)

Formatar: zadd name score value

Redis zset também é um tipo de string como set

Uma coleção de elementos que não permitem membros duplicados

A diferença é que cada elemento estará associado a um duplo

O tipo de pontuação, redis, é definido para o conjunto por meio da pontuação

Os membros da combinação são classificados de pequenos a grandes

Os membros do zset são únicos, mas a pontuação (pontuação) pode ser

repetir

2. O que é persistência do Redis ? Que tipos de métodos de persistência o Redis possui? Quais são os prós e contras?

Persistência é gravar os dados da memória no disco.

Evite o tempo de inatividade do serviço devido à perda de dados de memória

Redis fornece dois métodos de persistência:

RDB (padrão)

AOF

1. RDB:

rdb é a abreviatura de Redis DataBase

Função principal da função rdbSave (gerar arquivo RDB)

e rdbLoad (carregar memória do arquivo) duas funções

2. AOF:

Aof é a abreviatura de arquivo somente anexado

Sempre que uma tarefa ou função do servidor (agendada) é executada

A função flushAppendOnlyFile será chamada,

Esta função executa as duas tarefas a seguir

aof escrever salvar:

WRITE : De acordo com as condições, o cache em aof_buf

               Gravar no arquivo AOF

SAVE : Dependendo da condição, chame fsync ou fdatasync

            Função para salvar arquivo AOF no disco

Estrutura de armazenamento:

O conteúdo é um comando no formato redis Communication Protocol (RESP)

armazenamento de texto

Comparar:

① A frequência de atualização do arquivo aof é maior que a do rdb, portanto deve ser usado primeiro

    aof restaurar dados

② aof é mais seguro e maior que rdb

③ o desempenho do rdb é melhor que o aof

④ Se ambos estiverem equipados com carregamento prioritário AOF

RESP é usado pelo cliente e servidor redis antes

um protocolo de comunicação ;

Recursos do RESP: implementação simples, análise rápida, boa legibilidade

Para Strings Simples o primeiro byte da resposta é "+" 回复
Para Erros o primeiro byte da resposta é "-" 错误
Para Inteiros o primeiro byte da resposta é ":" 整数
Para Strings em Massa o primeiro byte da resposta é "$" 字符串
Para Arrays o primeiro byte da resposta é "*" 数组

3. Quais padrões de arquitetura o Redis possui? fale sobre suas características

① Modo autônomo

② Modo mestre-escravo

③ Modo Sentinela

④ modo cluster

1. Modo autônomo

Características:

Simples

pergunta:

① Capacidade de memória limitada

② capacidade de processamento limitada

③ Não pode estar altamente disponível

2. Modo mestre-escravo

A função de replicação do Redis permite ao usuário root

De acordo com um servidor Redis para criar qualquer número do servidor

réplica do servidor, onde o servidor replicado é o mestre

Servidor (mestre) e criado por replicação

A réplica do servidor é o servidor escravo (escravo)

Contanto que a conexão de rede entre os servidores mestre e escravo seja normal, o mestre

Ambos os servidores escravos terão os mesmos dados, o servidor mestre

O dispositivo sempre atualizará os dados que aconteceram com ele mesmo

Sincronize com o servidor escravo, para que o serviço mestre-escravo seja sempre garantido

Os dados do dispositivo são os mesmos

Características:

① função mestre/escravo

② Os dados mestre/escravo são iguais

③ Reduza a pressão de leitura mestre e transfira-a para a biblioteca escrava

pergunta:

① A alta disponibilidade não pode ser garantida

② Não resolveu a pressão da escrita mestre

3. Modo Sentinela

Redis sentinela é um monitoramento de sistema distribuído

Servidor mestre-escravo Redis e quando o servidor mestre fica offline

Failover automático

Três dessas propriedades:

Monitoramento : o Sentinel verificará constantemente

Verifique se seu mestre e escravo estão funcionando

muitas vezes

Notificação : Quando um monitorado

Quando há um problema com o servidor Redis, o Sentinel

Pode ser enviado ao administrador ou outros aplicativos através da API

Programa envia notificação

Failover automático :

Quando um servidor primário não funciona corretamente,

O Sentinel iniciará uma operação de failover automático

Características:

① Garanta alta disponibilidade

② Monitore cada nó

③ Migração automática de falhas

deficiência:

① Modo mestre-escravo, a troca leva tempo para perder dados

② Não resolveu a pressão da escrita mestre

4. Modo cluster

(1) Cluster (tipo de proxy)

Twemproxy é um redis de código aberto do Twitter

e servidor proxy memcache rápido/leve;

Twemproxy é um proxy rápido e de thread único que

Suporta protocolo Memcached ASCII e protocolo redis

Características:

① Vários algoritmos de hash: MD5, CRC16, CRC32,

    CRC32a、hsieh、murmúrio、Jenkins

② Suporte à exclusão automática de nós com falha

③ A lógica de fragmentação de back-end é transparente para negócios, negócios

    O método de leitura e escrita da parte é consistente com a operação de um único Redis

deficiência:

① Um novo proxy foi adicionado e sua alta disponibilidade precisa ser mantida

② A lógica de failover precisa ser implementada por si só, o que não pode ser suportado por si só

   A escalabilidade da transferência automática da falha de suporte é fraca, e a expansão e contração são realizadas

   ambos requerem intervenção manual

(2) Cluster (tipo de conexão direta):

Clusters de cluster Redis são suportados em versões posteriores ao redis 3.0,

Redis-Cluster adota uma estrutura sem centro e cada nó mantém

Armazene dados e todo o estado do cluster, cada nó e outros

Todos os nós estão conectados

Características:

① Arquitetura descentralizada (não há nó que afete gargalos de desempenho),

    Menos camada de proxy

② Os dados são distribuídos entre vários nós de acordo com o armazenamento de slot e entre nós

    Compartilhamento de dados, que pode ajustar dinamicamente a distribuição de dados

③ Escalabilidade, pode ser expandida linearmente para 1000 nós,

    Os pontos podem ser adicionados ou removidos dinamicamente.

④ Alta disponibilidade, quando alguns nós não estão disponíveis, o cluster ainda está disponível

    Adicionando Slave como uma cópia de backup de dados para obter falha automática

    Failover dinâmico, troca entre nós por meio de protocolo de fofoca

    Informações de status, use o mecanismo de votação para completar Slave to Master

    O papel de

deficiência:

Fraco isolamento de recursos, propenso à influência mútua

Os dados são replicados de forma assíncrona, o que não garante a forte consistência dos dados

4. Você já usou bloqueios distribuídos Redis e como isso é implementado?

Primeiro use setnx para competir pelo bloqueio e depois use expire

Adicione um tempo de expiração ao bloqueio para evitar que ele se esqueça de liberar

1. Se o processo for inesperado antes da execução expirar após setnx

    Travar ou reiniciar a manutenção, o que acontecerá?

O comando set possui parâmetros muito complexos, isso deve ser possível

Ao mesmo tempo, setnx e expire são combinados em uma instrução de uso!

5. Você já usou o Redis como uma fila assíncrona? Como você o usou? Quais são as desvantagens?

Geralmente use a estrutura da lista como uma fila, rpush produz mensagens,

mensagem de consumo lpop

Quando não há notícias do lpop, é preciso dormir um pouco

tente novamente

deficiência:

No caso dos consumidores ficarem offline, as mensagens produzidas serão perdidas,

Você deve usar uma fila de mensagens profissional, como RabbitMQ, etc.

Pode ser produzido uma vez e consumido várias vezes?

Usando o padrão de assinante de tópico pub/sub, você pode conseguir

Fila de mensagens 1:N

6. O que é penetração de cache? Como evitá-lo? O que é avalanche de cache? Como evitá-lo?

1. Penetração de cache

O sistema de cache geral consiste em armazenar em cache e consultar de acordo com a chave.

Consulta, caso não haja valor correspondente, deverá ir para

Pesquisa de sistema de back-end (como banco de dados)

Algumas solicitações maliciosas consultarão intencionalmente chaves que não existem,

Uma grande quantidade de solicitações causará um grande impacto no sistema back-end

Pressão, isso é chamado de penetração de cache

Como evitá-lo?

① Armazene em cache mesmo quando o resultado da consulta estiver vazio

   Defina o tempo de armazenamento para ser menor ou a chave correspondente a

   Limpe o cache após a inserção dos dados

② Para filtrar as chaves que não devem existir, você pode colocar

    Todas as chaves possíveis são colocadas em um grande

    Em Bitmap , filtre esse bitmap ao consultar

2. Avalanche de cache

Quando o servidor de cache é reiniciado ou um grande número de caches está concentrado em um determinado

Um período de tempo expira , de modo que, quando expirar, será

Coloque muita pressão no sistema back-end, fazendo com que o sistema trave

Como evitá-lo?

① Depois que o cache for invalidado, controle o cache bloqueando ou enfileirando

   Limite o número de threads para leitura e gravação no cache do banco de dados

   Por exemplo, apenas um thread pode consultar uma determinada chave

   Cache de dados e gravação, outros threads aguardam

② Faça o cache secundário , A1 é o cache original, A2 é a cópia

   Bay cache, quando A1 falha, você pode acessar A2, A1

   O tempo de expiração do cache está definido como curto e A2 está definido como longo

   Esperar

③ Para chaves diferentes, defina tempos de expiração diferentes , para que

   O momento da invalidação do cache deve ser o mais uniforme possível

Sete, comandos comuns do Redis 

1. Comandos de gerenciamento

# dbsize 返回当前数据库 key 的数量。  
# info 返回当前 redis 服务器状态和一些统计信息。  
# monitor 实时监听并返回redis服务器接收到的所有请求信息。  
# shutdown 把数据同步保存到磁盘上,并关闭redis服务。  
# config get parameter 获取一个 redis 配置参数信息。(个别参数可能无法获取)  
# config set parameter value 设置一个 redis 配置参数信息。(个别参数可能无法获取)  
# config resetstat 重置 info 命令的统计信息。(重置包括:keyspace 命中数、  
# keyspace 错误数、 处理命令数,接收连接数、过期 key 数)  
# debug object key 获取一个 key 的调试信息。  
# debug segfault 制造一次服务器当机。  
# flushdb 删除当前数据库中所有 key,此方法不会失败。小心慎用  
# flushall 删除全部数据库中所有 key,此方法不会失败。小心慎用

2. Comandos de ferramentas

#redis-server:Redis 服务器的 daemon 启动程序  
#redis-cli:Redis 命令行操作工具。当然,你也可以用 telnet 根据其纯文本协议来操作  
#redis-benchmark:Redis 性能测试工具,测试 Redis 在你的系统及你的配置下的读写性能  
$redis-benchmark -n 100000 –c 50  
#模拟同时由 50 个客户端发送 100000 个 SETs/GETs 查询  
#redis-check-aof:更新日志检查  
#redis-check-dump:本地数据库检查

 

Acho que você gosta

Origin blog.csdn.net/m0_72041293/article/details/132372049
Recomendado
Clasificación