Redis Stream 的一点理解

使用Redis实现了一个系统之间解耦的demo, 采用了 StackExchange.Redis  C#类库,  实现代码非常简单, 加深了对于 redis stream的理解. 

  Redis Stream Redis Pubsub
消费模式(推拉)

消费者采用拉模式

消费者端采用短时轮询机制拉取消息

将消息推送到消费者端
吞吐量 拉模式下吞吐量会更好 推模式下吞吐量差一些
延迟 拉模式的延迟较大 推模式延迟很小
多播 支持, 而且支持类似 kafka的consumer group 概念 支持, 同一个消息会推送到多个客户端, 即fanout
持久化 支持 不支持, 所以有可能会丢消息
acknowledge机制 支持 因为是push模式, 所以不需要
消息可靠性范式 at most once     fire and forget
     
     

 

 方案 使用场景
Redis Stream

实时性要求不太的高的系统之间解耦情形.

特点是: 轻量级方案

Redis Pubsub

没有什么太适合的场景.

RabbitMQ

全功能的MQ

1. 适合于实时性和可靠性要求都高的系统之间解耦, 采用push模式

2. 适合于实时性要求不太高的系统之间解耦, 采用pull 模式.
Kafka 适合于数据集成或大数据类项目, 实时性要求不高, 吞吐量要求很高
   

 

 

================================

参考

================================

redis 官网上的博客, 讲解一些基本概念和使用场景

https://redis.com/blog/what-to-choose-for-your-synchronous-and-asynchronous-communication-needs-redis-streams-redis-pub-sub-kafka-etc-best-approaches-synchronous-asynchronous-communication/

 

What are the main differences between Redis Pub/Sub and Redis Stream?

https://stackoverflow.com/questions/59540563/what-are-the-main-differences-between-redis-pub-sub-and-redis-stream

 

#yyds干货盘点#Redis之Stream

https://blog.51cto.com/u_13649800/4703619

 

#yyds干货盘点# Redis真的可以做MQ消息队列吗?

https://blog.51cto.com/u_11440114/4584094

 

基于Redis的Stream类型的完美消息队列解决方案基于Redis的Stream类型的完美消息队列解决方案

https://zhuanlan.zhihu.com/p/60501638

 

C# stackexchange.redis 类库官网

https://stackexchange.github.io/StackExchange.Redis/

posted @ 2021-12-27 22:26  harrychinese  阅读(638)  评论(1编辑  收藏  举报