Como testar o Redis?

Alguns amigos de teste vieram me perguntar, como testar o redis? Antes de mais nada precisamos saber, o que é redis? o que é que isso pode fazer

Redis é um banco de dados de armazenamento de alta velocidade do tipo chave-valor.

Redis é frequentemente usado como: cache, fila, publicação e assinatura, etc.

Portanto, a pergunta “como testar o redis?” pode ser transformada em:

Como testar o cache?

Como testar a fila?

Como testar a assinatura?

Na pilha de tecnologia com a qual entrei em contato, o redis raramente é usado para publicação e assinatura. Vamos falar principalmente sobre cache e fila.

01. Classificação de cache

Existem vários tipos de caches: caches de arquivos, caches de bancos de dados, caches de memória, caches de navegador.

O cache do navegador refere-se aos recursos de cache do próprio navegador. Para acelerar o carregamento da página, os navegadores modernos geralmente baixam arquivos de recursos como css e js uma vez e depois os armazenam em cache por um período de tempo até que o cache falhe ou a solicitação informe explicitamente que eles precisam ser atualizados.

Se a interface for gerada por meio de renderização direta da linguagem de back-end , smarty e outros métodos de renderização de modelo , o cache do tipo de arquivo geralmente é selecionado.

foto

Com o rápido desenvolvimento de grandes tecnologias front-end, a separação entre front-end e back-end torna-se cada vez mais popular, e o método de renderização inteligente é cada vez menos usado, e os requisitos de tempo de resposta da interface para serviços back-end são também está ficando cada vez mais alto. O cache de arquivos não é mais adequado para esse cenário. O cache de banco de dados está se tornando cada vez mais popular.

O cache de banco de dados é atualmente o mais comum: redis e memcached. Ambos são sistemas de cache de valor-chave distribuídos.

foto

O cache de memória é semelhante ao cache do banco de dados, mas limitado pela pilha de tecnologia.Por exemplo, Java pode ser usado, e Java é usado com muita frequência, mas PHP não pode ser usado. O cache de memória é mais rápido que o cache do banco de dados, mas como a memória não pode ser aumentada o tempo todo, ele tem mais restrições e ocorrerão problemas como vazamentos de memória se você não prestar atenção.

No uso real, a interface Java geralmente coloca alguns dados de alta frequência no cache de memória como o cache de primeiro nível e coloca os dados de sub-alta frequência no redis como o cache de segundo nível e, finalmente, consulta os dados do banco de dados.

foto

O papel do cache:

Pelo conteúdo acima, você já deve saber que as duas funções mais importantes do cache são: acelerar o acesso e reduzir a pressão do servidor e do banco de dados.

02. Cenários de uso de cache

Você pode perguntar: o que foi dito acima não tem nada a ver com testes? Não, acho que saber o que foi dito acima ainda é útil para o teste. Você sabe quando adicionar cache e quando não adicionar cache em termos de implementação técnica? Este é o controle técnico de uma interface, que precisa ser conhecido não apenas pelos desenvolvedores, mas também pelos testadores.

Você não fica orgulhoso se descobrir uma interface que deve adicionar cache sem adicionar cache antes do teste de pressão? Na verdade, ele corresponde à função do cache um por um.Quando o qps da interface é alto (por exemplo, mais de 100) ou há um requisito de velocidade de resposta, ou o desempenho do servidor e do banco de dados são ruins, você pode tentar usar o cache para resolver o problema.

Deixe-me dar alguns exemplos:

1. Na nova versão do WeChat, há uma função adicional de “status” no centro pessoal.

O número de usuários do WeChat é muito grande e o qps de acesso é muito alto, centenas de milhares de pessoas visitam ao mesmo tempo e é impossível consultar o banco de dados todas as vezes.

Semelhante a esse tipo de demanda, a abordagem geral é: primeiro armazenar em cache os dados de estado do usuário no aplicativo (cache do navegador) e chamar a interface de back-end para solicitar dados de "estado" empurrando ativamente ou puxando passivamente em um determinado período de tempo ;A interface lê dados do cache redis/memcached e os retorna; se a quantidade de dados não for tão grande, a interface pode ler diretamente os dados do cache de memória e devolvê-los; depois que os dados são retornados, o cache no o aplicativo do usuário é atualizado.

foto

2. Há uma página de lista de histórico de gerenciamento de produtos de uma pequena empresa de comércio eletrônico. O número de visitantes não é grande e a frequência de alterações de SKU é muito baixa. Ela pode ser visitada dezenas de vezes em 3 dias. Este tipo de cenário não precisa usar cache e, em segundo lugar, você precisa ver os dados atualizados imediatamente após a atualização das informações do produto, o que não é adequado para armazenamento em cache, portanto, não é recomendado o uso de cache.

3. O mesmo histórico de gestão de e-commerce, desta vez é uma página de estatísticas, que contabiliza as vendas de mercadorias ontem/hoje/quase uma semana.

Existem muitas soluções diferentes para este cenário.

(Deixamos de lado várias soluções técnicas para estatísticas de big data e simplesmente realizamos a função estatística de um sistema)

Não há necessidade de estatísticas em tempo real

Você só precisa fazer estatísticas regulares uma vez, por exemplo, você só precisa olhar os dados estatísticos de ontem: eles podem ser armazenados diretamente no banco de dados depois que os dados estatísticos são contados pelo script agendado, e você pode consultar diretamente o banco de dados quando você precisa visualizar os dados estatísticos

Necessidade de consultar estatísticas em tempo real

No entanto, a eficiência de execução de cada sql estatístico que precisa ser consultado atende às expectativas: você pode consultar diretamente o banco de dados toda vez que visualizar os dados, e a pressão no banco de dados não é alta neste momento

Necessidade de consultar estatísticas em tempo real

E devido aos enormes dados de negócios, a eficiência de execução de cada sql estatístico é muito baixa ou não pode ser contada diretamente: você pode resumir cada indicador e manter o valor estatístico no cache. Por exemplo, se você precisar de informações de vendas, cada vez que um o produto é vendido, o cache de estatísticas de vendas +1. Ao visualizar dados estatísticos, você pode consultar o cache neste momento

03. Como gerar cache

Depois de entender os cenários de uso do cache, vamos falar sobre como o cache é gerado.

De modo geral, existem duas formas de utilizar o cache, que resumi brevemente como: outside e inside .

Primeiro, vamos falar sobre como uma solicitação de interface é processada no programa:

foto

Este é um MVC típico, o Controlador recebe e processa os dados da solicitação, o Serviço processa os dados obtidos no Modelo e então a Visualização os gera.

Para diferentes cenários, podemos adotar várias maneiras de adicionar caches diferentes em vários nós para resolver problemas diferentes.

Por exemplo, em resposta à alteração dos parâmetros de solicitação, se os dados retornados estiverem fortemente relacionados aos parâmetros de solicitação, é adequado armazenar em cache os dados consultados "fora" (depois que os parâmetros de solicitação forem filtrados). Esse tipo de dados geralmente é armazenado em cache por um curto período de tempo, como 5 minutos. Lida principalmente com solicitações repetidas com os mesmos parâmetros de solicitação em um curto período de tempo. Se você encontrar um ataque de solicitação, mesmo que o período de validade do cache seja de apenas 1 segundo, ele ainda será muito eficaz e poderá bloquear um grande número de solicitações.foto

Por exemplo, caso os parâmetros da solicitação não mudem muito e os dados retornados estejam muito próximos dos dados armazenados no banco de dados, é adequado armazenar em cache os dados "dentro", ou seja, atualizar o cache enquanto atualiza o banco de dados No estado ideal desta situação, apenas a necessidade de ler o cache é suficiente e não há necessidade de interagir diretamente com o banco de dados, o que pode aliviar bastante a pressão sobre o banco de dados. Este período de validade do cache pode ser definido como muito longo.

foto

04. Como atualizar o cache

Depois de falar da geração, vamos falar da atualização do cache. Depois que o cache for gerado, ele não permanecerá inalterado normalmente, portanto, o cache precisa ser atualizado.

Existem várias maneiras de atualizar:

  • Renovação automática após expiração: Esta é a maneira mais preguiçosa de renovar. Ao definir o período de validade do cache, um novo cache é criado automaticamente através de uma nova solicitação após o cache expirar.

  • Excluir cache: após atualizar os dados do banco de dados, exclua o cache diretamente e crie automaticamente um novo cache por meio de uma nova solicitação.

  • Redefinir o cache: após atualizar os dados do banco de dados, redefina o cache diretamente.

05. Ponto de teste de cache Redis

1. Ângulo de teste de desempenho

Se a função de aumento/atualização do cache está correta, verifique se os dados do cache estão corretos

  • Adicione registros relacionados, visualize registros

  • ferramenta de backdoor

  • Usando a linha de comando, memcached e reids podem fazer login e visualizar diretamente

exclusão de cache

  • Cache válido, verifique funções de negócios relacionadas

  • O cache é excluído e as funções de negócios relevantes são verificadas

  • O cache expira e expira, memcached e redis podem definir o prazo de validade, verifique se existe prazo de validade, certo?

Mecanismo de eliminação excessiva: o que fazer quando o cache atinge o limite superior

penetração de cache

avalanche de cache

serviço de cache redis interrompido

tempo limite do cache

Depois que os dados armazenados em cache forem modificados por engano, restaure rapidamente para a versão especificada

Depois que os dados do cache forem excluídos por engano, restaure os dados rapidamente

2. Ângulo de teste da função Redis

  • Quando os dados do Redis entram em vigor, a leitura está correta?

  • Os dados do Redis não existem, você pode ler o valor correto do banco de dados normalmente, gravá-los no Redis e devolvê-los para a camada superior

  • O desempenho é normal quando os dados não existem em redis e db?

  • Ao excluir dados, os dados em redis e db são consistentes?

Por fim, gostaria de agradecer a todos que leram meu artigo com atenção. A reciprocidade é sempre necessária. Embora não seja algo muito valioso, você pode retirá-lo se precisar:

insira a descrição da imagem aqui

Applet de entrevista de teste de software

O banco de perguntas de teste de software esgotado por milhões de pessoas! ! ! Quem é quem sabe! ! ! O mini programa de quiz mais completo de toda rede, você pode usar seu celular para fazer os quizes, no metrô ou no ônibus, enrola!

As seguintes seções de perguntas da entrevista são abordadas:

1. Teoria básica de teste de software, 2. web, aplicativo, teste de função de interface, 3. rede, 4. banco de dados, 5. linux

6. web, aplicativo, automação de interface, 7. testes de desempenho, 8. noções básicas de programação, 9. perguntas da entrevista de hora, 10. perguntas de teste abertas, 11. testes de segurança, 12. noções básicas de informática

Esses materiais devem ser o armazém de preparação mais abrangente e completo para amigos [de teste de software]. Este armazém também acompanhou dezenas de milhares de engenheiros de teste na jornada mais difícil. Espero que possa ajudar você também!   

Acho que você gosta

Origin blog.csdn.net/qq_48811377/article/details/132474860
Recomendado
Clasificación