AdonisJs é uma estrutura Node.js construída especificamente para escrever microsserviços. Como as estruturas de back-end obrigatórias, o AdonisJs oferece suporte ao Redis, o que ajuda a acelerar o tempo de solicitação/resposta em aplicativos, tornando o processo contínuo e o aplicativo leve. Redis, que significa Re mote Di reitoria S erver, é um código-fonte aberto, in-memory armazenamento de estrutura de dados.

Redis é um banco de dados de valor-chave persistente em disco com suporte para várias estruturas de dados ou tipos de dados , que significa que, embora ofereça suporte a strings mapeadas com base em valores-chave para armazenar e recuperar dados (análogo ao modelo de dados com suporte em tipos tradicionais de bancos de dados), também oferece suporte a outras estruturas de dados complexas, como listas, conjuntos, etc.

À medida que prosseguirmos, veremos as estruturas de dados suportadas pelo Redis. Em termos simples, ele armazena seus arquivos em cache para que você não precise fazer uma solicitação sempre ao seu banco de dados.

De acordo com as classificações do DB-Engines mensais, o Redis costuma ser o valor-chave mais popular banco de dados e também classificado entre os dez bancos de dados mais populares do mundo da tecnologia.

N.B. , você precisa ter o Redis instalado em sua máquina local, pois ele não funcionará com o AdonisJs se não estiver instalado localmente.

As instruções sobre como instalar o Redis em sua máquina de desenvolvimento podem ser encontradas aqui:

Durante a instalação, sua porta padrão deve ser definida como 6379 . Esta é uma porta dedicada para Redis, embora também use a porta 6380 se a outra estiver em uso.

Introdução e pré-requisitos

Neste tutorial, vamos cobrir como:

  • Crie uma nova instância do aplicativo AdonisJs
  • Instale o Redis e configure-o em nosso aplicativo
  • Configure nosso banco de dados para fazer solicitações
  • Use os métodos get e set do Redis
  • Mostre a diferença no tempo da solicitação ao usar o Redis em comparação com fazer uma chamada direta do banco de dados
  • Use os métodos pub/sub do Redis para publicar e assinar solicitações

Para prosseguir com este tutorial, você deve ter conhecimento básico de JavaScript, AdonisJs e bancos de dados SQL, pois este tutorial não cobrirá os fundamentos.

Requisitos do sistema

  • MySQL
  • Redis

Para começar, precisamos instalar o Adonis CLI globalmente em nossa máquina local para que possamos usar os comandos CLI para criar e servir nosso aplicativo:

 npm-g @ adonisjs/cli 

A seguir, podemos criar um novo aplicativo AdonisJs e executá-lo usando o seguinte código; isso criará uma nova instância de AdonisJs. Em seguida, entramos na pasta do aplicativo e o executamos:

 adonis new adonis_redis cd adonis_redis adonis serve--dev 

Configurando o Redis para nosso aplicativo AdonisJs

Agora que nosso aplicativo está instalado e funcionando, vamos instalar o Redis:

 npm install @ adonisjs/redis 

Isso criará um novo arquivo chamado start/redis.js , que conterá nosso método subscribe . Abordaremos isso mais tarde no tutorial.

Quando a instalação for concluída, podemos registrar nosso provedor Redis dentro do arquivo start/app.js :

 provedores const=[ '@ adonisjs/redis/owners/RedisProvider'
] 

Em seguida, adicionamos o código abaixo em nosso arquivo server.js para iniciar o Redis no aplicativo. Sem essa adição, o Redis não será executado sempre que o aplicativo estiver em execução.

 novo Ignitor (require ('@ adonisjs/fold')) .preLoad ('start/redis') .appRoot (__ dirname) 

Agora vamos adicionar nosso REDIS_CONNECTION ao arquivo .env , que apontará para a configuração local na configuração Arquivo/redis.js .

 REDIS_CONNECTION=local 

Feito isso, iremos em frente e criaremos nosso controlador, rotas e modelo para buscar dados de nosso banco de dados e armazenar em cache os dados usando o Redis. Em seguida, buscaremos os dados do Redis no Postman para ver a diferença no tempo de resposta.

Configurando um banco de dados

Ter um banco de dados é fundamental para este tutorial, então vamos prosseguir e configurar um. Para fazer isso, vamos instalar o pacote @ adonisjs/lucid em nosso aplicativo usando o código abaixo. Lucid é um SQL ORM para Adonis que armazena dados em um padrão de registro ativo :

 adonis install @ adonisjs/lucid 

Quando a instalação estiver concluída, podemos adicionar um provedor Lucid ao nosso arquivo start/app.js , que adicionará o pacote Lucid a uma lista de provedores no aplicativo:

 provedores const=[ '@ adonisjs/lucid/supplies/LucidProvider'
] const aceProviders=[ '@ adonisjs/lucid/supplies/MigrationsProvider'
] 

Quando isso for feito, instalamos mysql em nosso aplicativo usando o código abaixo:

 npm install mysql 

Em seguida, configuramos nosso arquivo .env para se conectar ao nosso banco de dados usando a configuração mysql . Isso é essencial porque, por padrão, AdonisJs usa SQLite para armazenamento de dados.

 DB_CONNECTION=mysql
DB_USER=root
DB_PASSWORD=
DB_DATABASE=adonis_redis 

Agora altere a conexão em config/database.js para a conexão MySQL:

 conexão: Env.get ('DB_CONNECTION','mysql'), 

Criando um controlador

Criaremos um controlador User que buscará todos os usuários de nosso banco de dados. Para fazer isso, geramos um novo controlador usando o código abaixo:

 adonis make: usuário controlador--tipo http 

Em seguida, importamos nosso pacote banco de dados em nosso arquivo UserController.js para conectar e acessar o banco de dados:

//app/Controllers/UserController.js const Database=use ('Database') 

A seguir, adicionamos uma função async que chamará o banco de dados e buscará todos os usuários e retornará como JSON:

//app/Controllers/UserController.js índice assíncrono ({resposta}) { deixar usuários=esperar Database.table ('usuários'). select ('*'); return response.status (201).json ({ status: verdadeiro, mensagem:'buscou todos os usuários', dados: usuários });
} 

Criação da rota de usuários

Com nosso controlador configurado, agora podemos configurar nossas rotas para que possamos fazer chamadas API para nosso aplicativo. Vá para start/routes.js e adicione:

//start/routes.js Route.get ('users','UserController.index'); 

Criamos uma rota users que chama nossa função index no controlador User . Agora podemos usar nossa rota em Postman para buscar todos os nossos usuários.

Tempo de resposta usando Postman

O tempo de resposta aqui é 2.07s, o que é bom para um aplicativo da web de baixo tráfego. Mas quando você está executando um aplicativo de alto tráfego com muitas solicitações acontecendo ao mesmo tempo, isso torna o aplicativo muito lento no tempo de carregamento.

Agora que testamos o aplicativo usando Redis para armazenar dados em cache, vamos prosseguir e usar o Redis para ver a tremenda redução no tempo de resposta, que é fundamental para tornar os aplicativos mais rápidos e fáceis de usar.

Usando os métodos get / set

O método get obtém o valor de uma chave do Redis e retorna uma string. O método set contém uma chave com valores de string, que sobrescreve o valor da chave se ele já contiver uma string. Podemos usar esses métodos em nosso arquivo app/Controllers/Http/UserController.js para armazenar usuários em cache do banco de dados:

//app/controllers/Http/UserController.js índice assíncrono () { const cachedUsers=await Redis.get ('users') if (cachedUsers) { return JSON.parse (cachedUsers) } const users=await Database.table ('users'). select ('*'); aguardar Redis.set ('usuários', JSON.stringify (usuários)) usuários de retorno }
} 

Acima, estamos obtendo um valor dos principais usuários e, se não estiver vazio, o retornaremos como um arquivo JSON. Se estiver vazio, estamos buscando no banco de dados e, em seguida, definindo uma nova chave com os dados do banco de dados.

Configurando pub/sub

Pub/sub implementa o sistema de mensagens em que os remetentes (chamados de editores no Redis) enviam as mensagens, enquanto os destinatários (assinantes) as recebem.

Para configurar nosso pub/sub, criaremos um sub em start/redis.js . O sub se conectará ao banco de dados diretamente e salvará os dados em JSON sempre que uma sequência de publicação for iniciada.

Para começar, importe o banco de dados e o Redis em start/redis.js :

 const Database=use ('Database')
const Redis=use ('Redis') 

Em seguida, crie um novo método subscribe que busca todos os usuários do banco de dados. set cria uma nova chave users que contém os valores de todos os usuários no formato JSON e os armazena no Redis.

//start/redis.js Redis.subscribe ('usuários', async ()=> { deixar usuários=esperar Database.table ('usuários'). select ('*'); aguardar Redis.set ('usuários', JSON.stringify (usuários));
}) 

Agora, em nosso controlador User , importamos Redis, verificamos se um arquivo JSON users foi criado e retornamos o arquivo; caso contrário, vamos ao nosso banco de dados, buscamos todos os usuários e publicamos a resposta.

//app/Controller/Http/UserController.js const Database=use ('Banco de dados')
const Redis=use ('Redis') índice assíncrono ({resposta}) { deixe cachedUsers=await Redis.get ('users'); if (cachedUsers) { permitir que os usuários=JSON.parse (cachedUsers); return response.status (201).json ({ status: verdadeiro, mensagem:'buscou todos os usuários', dados: usuários }); }outro { deixar usuários=esperar Database.table ('usuários'). select ('*'); Redis.publish ('usuários',''); return response.status (201).json ({ status: verdadeiro, mensagem:'buscou todos os usuários', dados: usuários }); } } 

Agora execute seus http://127.0.0.1:3333/users no Postman. Observe a diferença no tempo de resposta:

Re sponse Time usando Redis

O tempo de solicitação/resposta foi drasticamente reduzido-de 2.07s sem Redis para 33ms com Redis!

Conclusão

Neste tutorial, conseguimos criar um novo aplicativo AdonisJs e instalar o Redis nele. Em seguida, configuramos o Redis para armazenar dados em cache, configuramos nosso banco de dados, usamos os métodos get , set , publicação e assinatura do Redis e reduzimos o tempo de solicitação/resposta em nosso aplicativo.

Você pode clonar o repositório em seu sistema e ajustá-lo como desejar. Você terá que copiar o arquivo .env.example e colar em .env , e então usar adonis key: generate para criar uma nova chave. Espero que este tutorial tenha sido útil. ✌

A postagem Usando Redis em AdonisJs para armazenamento em cache de dados apareceu primeiro em LogRocket Blog .

Source link