基于Redis实现消息队列典型方案
1 概述
2 基于List的 LPUSH+BRPOP 的实现
3 PUB/SUB,订阅/发布模式
4 基于SortedSet有序集合的实现
5 基于 Stream 类型的实现
6 其他实现
1 概述
消息队列,Message Queue,常用于解决并发系统中的资源一致性问题,提升峰值的处理能力,同时保证消息的顺序性、可恢复性、必送达性,对应用进行解耦,或者实现异步通讯等。市面上的 MQ应用有很多(例如:Kafka,RabbitMQ,Disque),同时也可以基于 Redis 来实现,比较典型的方案有:
- 基于List的 LPUSH+BRPOP 的实现
- PUB/SUB,订阅/发布模式
- 基于Sorted-Set的实现
- 基于Stream类型的实现
讨论之前,先推荐使用 Redis5.0中的Stream方案,一个几乎完美的Redis消息队列方案,http://www.hellokang.net/redis/stream.html。
在消息队列使用中,有生产者producter和消费者consumer。生产者负责生成消息,消费者负责使用处理消息。
生产,指的是将消息放