Redis 可以像 Kafka 一样用作实时发布-订阅。
我很困惑何时使用哪一个。
任何用例都会有很大帮助。
Redis 发布-订阅基本上就像一个即发即忘的系统,您生成的所有消息将立即传递给所有消费者,并且数据不会保存在任何地方。 Redis 的内存有限制。此外,生产者和消费者的数量也会影响 Redis 的性能。
另一方面,Kafka 是一种高吞吐量、分布式日志,可以用作队列。在这里,任意数量的用户可以生产,消费者可以随时消费。它还为通过队列发送的消息提供持久性。最终效果:
使用Redis:
Redis 5.0+版本提供了Stream数据结构。它可以被视为具有传递保证的日志数据结构。它提供了一组阻塞操作,允许消费者等待生产者添加到流中的新数据,除此之外,还提供了一个称为消费者组的概念。
Stream 结构基本上提供了与 Kafka 相同的功能。这里是文档
https://redis.io/topics/streams-intro
有两个最流行的 Java 客户端支持此功能:Redisson 和 Jedis
如果需要传递的可靠性,Redisson 提供 ReliableTopic 对象。https://github.com/redisson/redisson/wiki/6.-distributed-objects/#613-reliable-topic