Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Indo mais a fundo no mundo real

Pensando numa aplicação do mundo real e na natureza volátil do Redis. Se for criar uma fila de envio de emails, ou de processamento de relatórios, ou seja lá o que for e alguma instabilidade fizer o redis cair (tipo o pessoal de infra matar o Redis, ehehehe). O que se faria no mundo real? Habilitaria a persistência do Redis? Colocaria em paralelo no Redis e em um mecanismo (outro banco) mais persistente? Outra abordagem?

4 respostas
solução!

Olá Rafael, tudo bem?

Em relação a "habilitar a persistência no Redis", sim seria uma opção para este possível problema, porem o Redis normalmente não costuma ser usado como armazenamento primário no mundo real.

E sim, num cenário real, usamos o Redis como um banco de dados secundário e de rápido acesso, juntamente com o banco de dados primário onde os dados fiquem persistidos, como um MongoDB ou MySQL, e também usamos uma aplicação para orquestrar essas filas nos Redis, um bom exemplo é o Kue. Assim, quando um novo cadastrado fosse efetuado essa informação seria persistida no banco de dados (MongoDB ou MySQL) e inserida na fila do Redis os dados para o envio do e-mail, e a outra aplicação (Kue por exemplo) iria gerenciar essa fila, para definir a prioridade do processamento, acompanhar os processos, definir um número de tentativas em caso de falha, entre outras funções. Então caso o Redis caia por algum motivo, deveríamos ter alguma lógica (determinada durante o desenvolvimento da aplicação) para que os dados sejam novamente recuperados do banco de dados primário e colocados novamente no Redis quando ele voltar a funcionar, já que ele terá que voltar a funcionar brevemente, porque isso deve ser corrigido rapidamente pelo pessoal de Infraestrutura.

Espero ter ajudado!

Obrigado pela resposta.

Imaginei uma solução como essa mesmo durante o curso. O que me deixou curioso foi esse tal de Kue. Supondo que minha linguagem de propósito geral seja Java, O Kue chama os processos Java que processam a fila (por exemplo, enviar o email de fato para o servidor de emails)? ou estou entendendo errado o seu propósito?

Na verdade Rafael o Kue é do javascript, ele é utilizado quando é preciso criar um sistema que precisa de tratamento de filas, já no Java existe o Queue que é disponibilizado no pacote java.util , você pode ver um pouco mais sobre o Queue acessando esse Link.

Entendi, conheço o queue, sou programador java faz 18 anos. Achei que o kue fosse algo além, algum framework ou algo do gênero.