O Redis pode ser usado como pub-sub em tempo real, assim como o Kafka.
Estou confuso sobre qual usar quando.
Qualquer caso de uso seria de grande ajuda.
O Redis pode ser usado como pub-sub em tempo real, assim como o Kafka.
Estou confuso sobre qual usar quando.
Qualquer caso de uso seria de grande ajuda.
Respostas:
O pub-sub do Redis é mais como um sistema de fogo e esquecimento, em que todas as mensagens que você produziu serão entregues a todos os consumidores de uma vez e os dados não serão mantidos em lugar nenhum. Você tem limitação de memória em relação ao Redis. Além disso, o número de produtores e consumidores pode afetar o desempenho no Redis.
Kafka, por outro lado, é um log distribuído de alto rendimento que pode ser usado como uma fila. Aqui, qualquer número de usuários pode produzir e os consumidores podem consumir quando quiserem. Ele também fornece persistência para as mensagens enviadas pela fila.
Tomada final:
Use Redis:
Use kafka:
redis
para garantir que as mensagens que foram enviadas, mas ainda não processadas , não sejam perdidas após a reinicialização do redis
. Embora seja possível fazer isso, redis
não permite manter (ou continuar a reutilizar palavras de @Karthikeyan) fora da caixa.
A versão Redis 5.0+ fornece a estrutura de dados Stream . Pode ser considerada uma estrutura de dados de log com garantia de entrega. Ele oferece um conjunto de operações de bloqueio que permite aos consumidores esperar por novos dados adicionados a um fluxo pelos produtores e, além disso, um conceito chamado Grupos de Consumidores.
Basicamente, a estrutura Stream fornece as mesmas capacidades do Kafka.
Aqui está a documentação https://redis.io/topics/streams-intro
Existem dois clientes Java mais populares que suportam esse recurso: Redisson e Jedis