【发布时间】:2016-10-25 17:43:26
【问题描述】:
Redis 可以像 Kafka 一样用作实时发布订阅。
我不知道什么时候使用哪个。
任何用例都会有很大帮助。
【问题讨论】:
-
我不知道为什么这个问题被关闭为“基于意见”?两者之间存在客观的技术差异,现有答案清楚地概述了这些差异。
标签: redis apache-kafka publish-subscribe
Redis 可以像 Kafka 一样用作实时发布订阅。
我不知道什么时候使用哪个。
任何用例都会有很大帮助。
【问题讨论】:
标签: redis apache-kafka publish-subscribe
Redis pub-sub 基本上就像一个“一劳永逸”的系统,您生成的所有消息都将立即传递给所有消费者,而数据无处保存。您对 Redis 的内存有限制。此外,生产者和消费者的数量也会影响 Redis 的性能。
另一方面,Kafka 是一种高吞吐量的分布式日志,可以用作队列。在这里,任何数量的用户都可以生产,消费者可以随时消费。它还为通过队列发送的消息提供持久性。
最终结果:
使用 Redis:
使用卡夫卡:
【讨论】:
redis 以确保已发送但尚未处理的消息将redis 重启后不会丢失。尽管可以这样做,redis 不允许开箱即用 hold(或 keep 重复使用 @Karthikeyan 的话)。
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
【讨论】:
Kafka 和 Redis 都是开源工具。在 GitHub 上具有 37.4K 个 GitHub 星和 14.4K 分叉的 Redis 似乎比具有 12.7K GitHub 星和 6.81K GitHub 分叉的 Kafka 更受欢迎。
Airbnb、Uber Technologies 和 Instagram 是一些使用 Redis 的热门公司,而 Kafka由 Uber Technologies、Spotify 和 Slack 使用。 Redis 获得了更广泛的认可,在 3261 公司堆栈和 1781 开发人员堆栈中被提及;与列在 509 个公司堆栈和 470 个开发人员堆栈中的 Kafka 相比。
【讨论】: