Help! (nodejs, redis, queue)

Bom, estou com uma task para realizar e não sei o melhor jeito de fazer, vou descrever e falar o que pensei para realizar.

SITUAÇÃO PROBLEMA

O meu sistema tem uma tabela de usuário e cada usuário pode ter N contatos (uso o telefone para evitar duplicidade (pk)). Quando um novo usuário é criado preciso verificar na lista de contatos dos usuários para ver se alguém tem esse novo usuário adicionado na sua lista de contado. Caso tenha, preciso transformar o contado em uma relação de amizade (igual rede social). Ai começa a "task", além de pesquisar quem tem esse contato, preciso enviar e-mail para eles enviando que o contato agora está na plataforma e criar notificações para serem vistar no sistema.

MINHA POSSÍVEL SOLUÇÃO

Pensei em jogar isso para uma fila e rodar em background pois pode levar um certo tempo para ser realizado, utilizando eventos + nestjs + bull + redis.

Eu iria disparar um evento, pois isso vai impactar em algumas partes do sistema, um subscriber adicionaria na queue (bull + redis) e depois eu rodaria um background job.

O que acham ? alguem teria uma sugestão melhor e mais performática? É necessário a utilização de redis ou um node-cache daria conta ?

REDIS NÃO É CONFIÁVEL PARA GUARDAR INFORMAÇÃO. NÃO DEVE SER USADO PARA FILA

O que acontece se der um problema e o redis for reiniciado? Você perde TODAS as suas tasks.

Redis é um banco de dados de memória. Ele é uma ferramenta excelente para cache e lock distribuído.

Não deve ser usado em qualquer cenário que precise de persistência (Por mais que as pessoas usem erroneamente).

Se quer usar fila use RabbitMQ. É relativamente simples de usar.


Tirando esse fator sim, tua lógica tá certa, é isso mesmo que eu recomendaria que você faça.

Obrigado, vou dar uma olhada em como implementar usando rabbitMQ.