Redis和kafka之间的区别

Swe*_*rma 47 publish-subscribe redis apache-kafka

我是Redis和Kafka的初学者.Redis可以用作实时pub-sub.然而,Kafka也是实时的pub-sub.我很困惑哪个时候使用.任何用例都将是一个很大的帮助!谢谢!

Kar*_*all 87

Redis pub-sub主要是一个火灾和遗忘系统,您生成的所有消息将立即传递给所有消费者,数据不会保存在哪里.你对redis的记忆有限制.生产者和消费者的数量也会影响Redis的性能.

另一方面,Kafka是一种高吞吐量的分布式日志,可以像队列一样使用.在这里,任何数量的用户都可以生产,消费者可以随时消费.它还为通过队列发送的消息提供持久性.

最终拍摄:

使用Redis:

  1. 如果你想要火,忘记那种系统,你生产的所有信息都会立即传递给消费者.
  2. 如果速度最关心.
  3. 如果你可以忍受数据丢失.
  4. 如果您不希望系统保留已发送的消息.
  5. 要处理的数据量并不大.

使用kafka:

  1. 如果你想要可靠性.
  2. 如果您希望系统拥有即使在消费后已发送的消息副本.
  3. 如果你不能忍受数据丢失.
  4. 如果Speed不是一个大问题.
  5. 数据量很大

  • 一个主要区别是Redis Pub/Sub是基于推送的,而Kafka Pub/Sub是基于拉取的.这意味着发布到Redis的消息将立即自动发送给订阅者,而在Kafka数据/消息永远不会被推送给消费者,消费者将在消费者准备好处理消息时询问消息.https://www.cloudkarafka.com/blog/2016-11-30-part1-kafka-for-beginners-what-is-apache-kafka.html http://kafka.apache.org/documentation.html#design_pull (42认同)

Nik*_*rov 21

Redis 5.0+版本提供了Stream数据结构。它可以被视为具有交付保证的日志数据结构。它提供了一组阻塞操作,允许消费者等待生产者添加到流中的新数据,此外还有一个称为消费者组的概念。

基本上 Stream 结构提供与 Kafka 相同的功能。

这是文档https://redis.io/topics/streams-intro

有两个最流行的 Java 客户端支持此功能:Redisson和 Jedis