redis和kafka的区别


本文摘自PHP中文网,作者(*-*)浩,侵删。

Kafka与Redis PUB/SUB之间较大的区别在于Kafka是一个完整的系统,而Redis PUB/SUB只是一个套件(utility)――没有冒犯Redis的意思,毕竟它的主要功能并不是PUB/SUB。

redis 消息推送(基于分布式 pub/sub)多用于实时性较高的消息推送,并不保证可靠。(推荐学习:Redis视频教程)
其他的mq和kafka保证可靠但有一些延迟(非实时系统没有保证延迟)。redis-pub/sub断电就清空,而使用redis-list作为消息推送虽然有持久化,但是又太弱智,也并非完全可靠不会丢。

另外一点,redis 发布订阅除了表示不同的 topic 外,并不支持分组,比如kafka中发布一个东西,多个订阅者可以分组,同一个组里只有一个订阅者会收到该消息,这样可以用作负载均衡。

Redis,它首先是一个内存数据库,其提供的PUB/SUB功能把消息保存在内存中(基于channel),因此如果你的消息的持久性需求并不高且后端应用的消费能力超强的话,使用Redis PUB/SUB是比较合适的使用场景。比如官网说提供的一个网络聊天室的例子:模拟IRC,因为channel就是IRC中的服务器。用户发起连接,发布消息到channel,接收其他用户的消息。这些对于持久性的要求并不高,使用Redis PUB/SUB来做足矣。

而Kafka是一个完整的系统,它提供了一个高吞吐量、分布式的提交日志(由于提供了Kafka Connect和Kafka Streams,目前Kafka官网已经将自己修正为一个分布式的流式处理平台,这里也可以看出Kafka的野心:-)。除了p2p的消息队列,它当然提供PUB/SUB方式的消息模型。而且,Kafka默认提供了消息的持久化,确保消息的不丢失性(至少是大部分情况下)。另外,由于消费元数据是保存在consumer端的,所以对于消费而言consumer被赋予极大的自由度。consumer可以顺序地消费消息,也可以重新消费之前处理过的消息。这些都是Redis PUB/SUB无法做到的。

Redis PUB/SUB使用场景:

1. 消息持久性需求不高
2. 吞吐量要求不高
3. 可以忍受数据丢失
4. 数据量不大

Kafka使用场景:

上面以外的其他场景:)
1. 高可靠性
2. 高吞吐量
3. 持久性高
4. 多样化的消费处理模型

更多Redis相关技术文章,请访问Redis数据库使用入门教程栏目进行学习!

以上就是redis和kafka的区别的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

php为什么使用Redis

关于Redis在高并发下的性能分析

Redis配置远程连接的方法详解

如何强制关闭Redis并重新启动

Redis怎么用

Redis缓存怎么和数据库同步

为什么说Redis是单线程的

linux下Redis的安装步骤详解

Redis主从模式是集群吗

Redis有哪些集群模式

更多相关阅读请进入《Redis》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...