Crud completo com Redis, mongoDB e Node.js

Introdução
Dando continuidade ao meu artigo anterior sobre Redis, hoje irei demonstrar como criar uma API utilizando Node.js, MongoDB e o Redis como cache. Caso tenha interesse em ler o artigo anterior, segue o seu link: Dando os primeiros passos com Redis.
Para pular a etapa de criação de um novo projeto, eu irei utilizar um que eu desenvolvi em um artigo anterior. Caso tenha interesse em clonar esse projeto, segue o seu link no GitHub: node-express.
Estrutura do projeto
O projeto está bem simples, eu criei um controller contendo os 5 verbos para um crud e um diretório para criação das rotas. Abaixo você tem uma imagem demonstrando a estrutura desse projeto:

Para os próximos passos será necessário um editor de textos, eu irei utilizar o VS Code, mas você pode escolher um de sua preferência.
O primeiro passo será baixar as bibliotecas necessárias para o utilizar o redis e o mongoose. Para isso, abra um terminal e navegue até o seu projeto, em seguida execute o comando abaixo:
npm i body-parser
mongoose redis --save
O próximo passo será a criação de um Schema. Para isso, crie um arquivo chamado db.js no seguinte caminho ./src/config/db.js. Agora abra esse arquivo no seu editor de textos e atualize ele com o trecho de código abaixo:
O arquivo acima irá criar uma collection, nós iremos utilizar ela nos próximos passos desse artigo.
Agora para deixar o código mais organizado, vamos criar um diretório no nosso projeto para os nossos repositórios. Para isso, crie um novo diretório no seguinte path ./src/repositories/ e dentro dele um arquivo chamado personRepository.js.

Esse repositório será responsável pela conexão com o Schema. Atualize o arquivo personRepository.js com o código abaixo:
Antes de atualizar o controller, vamos adicionar o bodyParser no projeto. Abra o seu arquivo app.js e atualize ele com o código abaixo.
Agora atualize o seu arquivo ./src/controllers/personController.js com o código abaixo:
Navegando rapidamente pelo código acima você tem:
- 03: Chamada para o repositório PersonRepository
- 05 a 43: implementação dos verbos com a chamada ao nosso PersonRepository
Testando as rotas
Para não precisar instalar o mongoDB no meu computador, eu irei utilizar ele dentro de um contêiner docker. Caso tenha interesse em utilizar o mongo com Docker, segue link de um artigo onde eu demonstro esse passo a passo: Docker Criando um server mongoDB.
Agora para testar as nossas rotas eu irei utilizar o postman. Caso não conheça ele ainda, o postman nós permite enviar requisições HTTP e obter suas respostas.
POST
A primeira rota que nós precisamos testar é o post, ela que irá cadastrar os nossos registros. Com o postman aberto, preencha ele conforme a imagem abaixo:

GET
Agora altere o verbo para GET e veja o resultado abaixo:

GETById
Buscando uma pessoa pelo seu Id:

PUT
Para validar o PUT, eu irei atualizar o campo role para System Architect.

DELETE
Agora vamos deletar o nosso registo:

Bom, com isso nós conseguimos verificar que todos os nossos verbos estão funcionando corretamente. Para que possamos testar o Redis, será necessário ter alguns registros cadastrados. Para isso, eu irei cadastrar o Zé Maria 10x.
Configurando o Redis
Para não precisar instalar o Redis no meu computador, eu irei utilizar ele da mesma forma que estou utilizando o mongo, dentro de um contêiner Docker. Caso tenha interesse em saber como criar um contêiner com redis, segue link de um artigo onde eu demonstro esse passo: Instalando o Redis em um contêiner Docker.
O próximo passo será adicionar o Redis no nosso controller. Para isso, atualize o arquivo personController.js com o trecho de código abaixo:
O passo anterior foi bem simples, eu adicione o redis na linha 05, em seguida eu criei um cliente na linha 06, depois eu criei um chave chamada allpersons que deve expirar em 20 segundos. Para verificar se a aplicação está batendo no banco ou no redis, eu criei dois consoles retornando: redis quando estiver no cache e um outro db para quando a API requisitar os dados do mongo.
Testando o Cache
Agora para verificar se o redis está configurado corretamente, execute o código novamente e note no seu terminal que ele bate uma vez no banco e depois fica no redis por 20 segundos. Abaixo você tem uma imagem demonstrando esse passo:

Com isso nós finalizamos mais esse artigo, o meu intuito aqui foi demonstrar uma das formas de melhorar a performance dos nossos sistemas. Caso tenha interesse em baixar o código fonte desenvolvido nesse artigo, segue o seu link no GitHub: Node_MongoDB_Redis.
Espero ter ajudado e até um próximo artigo pessoal 😉