首页 > 数据库 >Redis和kafka比较,两者的区别和各自的优势。

Redis和kafka比较,两者的区别和各自的优势。

时间:2023-03-31 11:14:32浏览次数:72  
标签:SUB 两者 Redis PUB Kafka 消息 持久性 kafka

1.

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无法做到的。
2.Kafka与Redis PUB/SUB之间较大的区别在于Kafka是一个完整的系统,而Redis PUB/SUB只是一个套件(utility)——没有冒犯Redis的意思,毕竟它的主要功能并不是PUB/SU。

3.

Redis 消息推送(基于分布式pub/sub)多用于实时性较高的消息推送,并不保证可靠。其他的mq和Kafka保证可靠但有一些延迟(非实时系统没有保证延迟)。redis-pub/sub断电就清空,而使用redis-list作为消息推送虽然有持久化,但是又太弱智,也并非完全可靠不会丢
4.Redis 发布订阅除了表示不同的topic 外,并不支持分组,比如Kafka中发布一个东西,多个订阅者可以分组,同一个组里只有一个订阅者会收到该消息,这样可以用作负载均衡。

5.

Redis PUB/SUB使用场景:

1. 消息持久性需求不高

2. 吞吐量要求不高

3. 可以忍受数据丢失

4. 数据量不大

Kafka使用场景:

上面以外的其他场景:)

1. 高可靠性

2. 高吞吐量

3. 持久性高

4. 多样化的消费处理模型

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
  TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back

标签:SUB,两者,Redis,PUB,Kafka,消息,持久性,kafka
From: https://www.cnblogs.com/EdwinITlife/p/17275636.html

相关文章

  • RedisInsight的使用(Redis图形化工具)
    建议连接redis-cluster需求的,并且没有设置密码的,安装redisinsight-win-1.13.1.msi,但是官网说1.X版本在23/4/30后就不支持了。在浏览器中输入http://IP:8001就能看到主界面   勾选IhavereadandunderstoodtheRedisInsightLicenseTerms,r然后点CONFIRM   ......
  • kafka幂等性与重复消费
    1、Kafka生产者幂等性1)Kafka消息交付可靠性保障:Kafka默认是:至少一次最多一次(atmostonce):消息可能会丢失,但绝不会被重复发送至少一次(atleastonce):消息不会丢失,但有可能被重复发送精确一次(exactlyonce):消息不会丢失,也不会被重复发送2)Kafka实现幂等性......
  • NoSQL之Redis配置与优化
    一、数据库类型1.关系型数据库关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。SQL语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。主流的关系型数据库包括Oracle、MySQL、SQLSe......
  • 微信小程序开发:前端中的"Redis"
    wx.setStorageSync('key','value')wx.getStorageSync("key")   参考链接https://developers.weixin.qq.com/miniprogram/dev/api/storage/wx.setStorageSync.html ......
  • redis cluster 故障后,主从位于不同节点的修复【转】
    今天机房有一台物理机宕机了,有一个虚拟机192.168.1.122,其上有两个redis节点也不能用了。    redis没有备份,丢失的192.168.1.122节点只能重建。    我找运维的......
  • Linux 部署: canal (同步mariadb数据发往kafka)
    参考文档:https://blog.csdn.net/weixin_55549435/article/details/123309631目录1节点规划2部署mariadb3部署canal4验证附录1节点规划节点ipdeployvm1......
  • MySQL、Redis和Elasticsearch比较
    MySQL是一种关系型数据库管理系统,它被广泛用于存储结构化数据。拥有极高的可靠性和安全性,支持ACID事务,并具有良好的扩展性,可以适应高并发访问的场景。Redis是一种内存......
  • 查看redis客户端连接IP
    腾讯云监控redis连接IP只有实时IP连接监控情况,直接使用redis-cliclientlist也只能看到当时的连接情况,没有时间戳可以参考,所以对此命令进行加工,增加时间戳并输出到文件中,......
  • SpringBoot中集成Redis实现对redis中数据的解析和存储
    场景SpringBoot中操作springredis的工具类:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108335645上面讲的操作redis的工具类,但是对于redis的集成并没......
  • 【Redis】多线程Redis的N种架构
    【Redis】多线程Redis的N种架构为什么需要多线程的Redis在单点上利用更多的资源--热点资源官方的多线程只看左边部分其实还是单线程的形式,设置io Thread的数量==》......