Cache do lado do cliente Redis

Cache do lado do cliente Redis
Os aplicativos da web modernos funcionam com enormes quantidades de dados armazenados em bancos de dados de back-end. Portanto, os aplicativos da Web que funcionam com dados devem ser cuidadosamente otimizados para desempenho. Cada solicitação feita sobre uma rede para um banco de dados é caro. Por outro lado, afeta diretamente o desempenho de um aplicativo da web.

O cache do lado do cliente permite o armazenamento de dados acessados ​​com frequência no final do navegador ou na memória do servidor de aplicativos. Ele consome armazenamento do lado do cliente até certo ponto, mas o ganho de desempenho é alto. Geralmente, quando os dados são necessários, o cliente envia uma solicitação para o back -end para a consulta dados. Na maioria das vezes, os clientes da Web recuperam o mesmo conjunto de dados repetidamente no banco de dados. Com o cache do lado do cliente ativado, os dados recuperados por consultas populares são armazenados no lado do cliente.

O cache do lado do cliente tem dois benefícios principais:

  • Melhora o desempenho em uma quantidade considerável.
  • Reduz o banco de dados e as cargas de rede.

Ao mesmo tempo, o cache do lado do cliente enfrenta o desafio de manter os dados atualizados. Se os dados forem alterados no final do banco de dados, esse dados no cache do cliente ficará desatualizado e o cliente deve ser notificado imediatamente para buscar a peça atualizada. Redis implementou seu modelo de cache, abordando esses problemas.

Configure o cache do lado do cliente com redis

Em Redis, o cache do lado do cliente é nomeado monitorando. Existem dois modos de rastreamento suportados por Redis. O modo padrão é chamado de rastreamento assistido por servidor, onde o servidor envia notificações de invalidação que estão relacionadas apenas às chaves que estão no cache do cliente. Por outro lado, o modo de transmissão oferece liberdade para os clientes se inscreverem nos principais prefixos preferidos e receber notificações sempre que uma chave com o prefixo assinada é modificada.

Rastreamento assistido por servidor para clientes Redis

Como o nome sugere, no modo assistido por servidor, o servidor acompanha as teclas que um cliente específico está acessando. Sempre que uma chave rastreada é alterada no banco de dados, o cliente será notificado imediatamente. Mais importante ainda, as notificações de invalidação são geradas apenas para as chaves que estão em um determinado cache do cliente. A única desvantagem desse modo é que ele explora a memória do servidor para lembrar as teclas acessadas por cada cliente.

Cliente dedicado para notificações de invalidação

Geralmente, o cache do lado do cliente assistido pelo servidor é implementado usando um cliente dedicado que recebe notificações de invalidação. Este cliente é o ponto central que recebe todas as mensagens de invalidação para todos os clientes conectados a um determinado banco de dados.

Vamos configurar um cliente dedicado para receber mensagens de invalidação. Primeiro, precisamos nos conectar ao nosso servidor Redis como um cliente autorizado e obter o ID do cliente da seguinte maneira.

ID do Cliente

O comando acima retorna o ID da conexão atual do cliente, que é 3. Este ID é necessário nas próximas etapas para identificá -lo como o cliente central para receber as mensagens de invalidação. Em seguida, assinamos o canal de notificação de invalidação da seguinte maneira. O comando de assinatura pode ser usado.

Inscreva -se canal [canal…]

Neste exemplo, o canal é __redis __: invalidar.

Inscreva -se __redis __: invalidar

Agora, configuramos a conexão do cliente para receber as notificações de invalidação. Vamos iniciar outra conexão do cliente e ativar o rastreamento do cliente. Além disso, redirecionamos todas as mensagens de invalidação associadas ao novo cliente para o cliente central criado na etapa anterior. Podemos usar o comando de rastreamento do cliente para conseguir isso. A seguir, a sintaxe do comando de rastreamento do cliente.

Rastreamento do cliente [Redirecionar cliente-ID] [Prefixo prefixo [prefixo prefixo…]] [Bcast] [Optin] [Optout] [NOLOOP]

ON | DESLIGADO : Determinar se o rastreamento do cliente deve ser ativado ou não.

Redirecionar: Especifique o ID do cliente que recebe mensagens de invalidação.

Vamos ativar o rastreamento do cliente para um novo cliente autorizado e usar a opção de redirecionamento para especificar a conexão que recebe a invalidação, mensagens que são 3.

Rastreamento do cliente no redirecionamento 3

Agora estamos prontos para testar nosso rastreamento do cliente Redis. Primeiro, definimos um par de valores-chave da seguinte maneira.

Defina o nome de usuário "user_01"

Em seguida, acessamos o nome de usuário do mesmo cliente, que abrangerá essa informação do lado do cliente, pois permitimos que o rastreamento do cliente.

Obtenha nome de usuário

Vamos abrir um novo cliente e alterar o valor armazenado na chave nome de usuário do seguinte modo.

Defina o nome de usuário "user_2"

Imediatamente, o cliente que se inscreveu no canal invalidado é notificado de que o valor armazenado na chave nome de usuário já foi modificado e já é inválido.

Este modelo é baseado no protocolo RESP2, que é o protocolo padrão Redis que os clientes usam.

Protocolo RESP3 para receber notificações ao cliente de rastreamento

Da versão 6.0, Redis apresenta o protocolo RESP3, que permite a um cliente ativo receber mensagens de invalidação. Esta é uma enorme vantagem em que um cliente Redis pode ouvir um determinado canal ao emitir comandos.

Vamos verificar a versão Redis primeiro. Deve ser versão 6.0 ou o mais recente para usar o protocolo RESP3. O seguinte comando pode ser emitido para verificar a versão Redis.

Redis-cli --version

Já que é a versão 7.0, somos todos bons para usar o protocolo resp3. Os clientes Redis usam resp2 por padrão. Então, precisamos mudar para o protocolo RESP3.

Olá 3

Isso mudaria o protocolo para resp3 com a seguinte saída.

Vamos ativar o rastreamento do cliente como no exemplo anterior usando o comando de rastreamento do cliente. Nesse caso, não precisamos especificar a opção de redirecionamento.

Rastreamento de clientes em

Agora as chaves que esse cliente busca será rastreado pelo servidor. Além disso, quando o valor de uma chave rastreada muda, uma mensagem de invalidação será enviada aos clientes que armazenaram em cache essa chave específica.

Vamos buscar a chave nome de usuário.

Obtenha nome de usuário

O cliente armazena em cache o nome de usuário chave e seu valor associado. Agora, iniciamos outra conexão do cliente e alteramos o valor armazenado na chave nome de usuário.

Se você verificar a conexão anterior do cliente, não há uma mensagem de invalidação recebida ainda. Se você emitir outro comando, a notificação de invalidação será exibida imediatamente como segue.

2. Modo de transmissão para rastreamento do cliente

No modo padrão, os clientes recebem notificações de invalidação apenas para as chaves que buscaram em chamadas de comando anteriores. Com o modo de transmissão ativado, os clientes assinam um prefixo chave específico e o cliente recebe notificações de invalidação para cada chave que é alterada cuja chave começa com o prefixo subscrito.

Vamos usar uma nova conexão do cliente para receber as mensagens de invalidação assinando o canal invalidado da seguinte forma.

Neste exemplo, o ID de conexão do cliente é 10, que será usado com a opção Redirect para um novo cliente. Vamos especificar a opção bcast no comando de rastreamento do cliente da seguinte forma.

Rastreamento de clientes no prefixo Bcast Usuário: Redirecionar 10

Suponha que tenhamos uma chave chamada Usuário: ID: 1 na instância Redis. Vamos obtê -lo deste cliente.

Agora o usuário: ID: 1 Tecla está em cache no lado do cliente.

Vamos criar uma nova conexão do cliente e definir uma nova chave da seguinte maneira: Usuário: ID: 3.

Neste momento, o cliente que ativou o rastreamento recebe uma mensagem de invalidação e será redirecionado para o cliente que é identificado pelo ID 10. Isso acontece porque a nova chave contém o prefixo do utilizador: Qual é o prefixo subscrito pelo cliente habilitado para rastreamento. Como você pode ver, o servidor não acompanha nenhuma das chaves que cada cliente busca, mas transmite mensagens de invalidação se o prefixo -chave alterado corresponder ao prefixo subscrito por cada cliente.

Optin e optout options

As opções de opção e optão podem ser usadas para filtrar quais chaves o servidor deve rastrear exatamente ou não rastrear. Com essas opções ativadas no comando de rastreamento do cliente, o Redis só acompanha as chaves que são consultas logo após o comando do cliente em cache sim. Isso minimiza o uso da memória do lado do servidor e carrega drasticamente.

Conclusão

Em resumo, o cache do lado do cliente é uma das técnicas amplamente usadas para melhorar o desempenho de aplicativos da Web que freqüentemente solicitam dados de bancos de dados de back-end. Conforme discutido, o navegador ou o servidor de aplicativos do lado do cliente pode conter os dados relacionados às consultas populares emitidas pelo cliente. Como mencionado na introdução, em Redis, o cache do lado do cliente é chamado de rastreamento. Além disso, os dois modos de rastreamento estão disponíveis em Redis. Tanto o cliente dedicado quanto os modos de transmissão têm seus próprios casos de uso.