目录:
1. 基于List的LPUSH+BRPOP的实现
2. PUB/SUB,订阅/发布模式
3. 基于Sorted-Set的实现
4. 基于Stream类型的实现
优缺点分析:
一、基于List的LPUSH+BRPOP的实现:
典型的命令:
- LPUSH:将消息加入队列头部;
- BRPOP:从队列末尾取出消息,阻塞模式(RPOP的阻塞版本);
优点:
- > 实现简单;
- > redis支持持久化消息,意味着消息不会丢失,可以重复查看(注意不是消费,只看不用,LRANGE类的指定);
- > 可以保证顺序,使用LPUSH命令,可以保证信息的顺序性;
- > 使用RPUSH,可以将消息放在队列的开头,达到优先消息的目的,可以实现简易的消息优先队列;
缺点:
- > 做消费确认ACK比较麻烦,就是不能保证消费者在读取之后,未处理后的宕机问题。导致消息意外丢失。通常需要自己维护一个pending列表,保证消息的处理确认;
- > 不能做广播模式,例如典型的Pub/Discribe模式;
- > 不能重复消费,一旦消费就会被删除;
- > 不支持分组消费,需要自己在业务逻辑层解决;