redis持久化消息队列的简单实现

Redis 的列表经常被用作队列 (queue) ,用于在不同程序之间有序地交换消息 (message) 。一个客户端通
LPUSH 命令将消息放入队列中,而另一个客户端通过 RPOP 或者 BRPOP 命令取出队列中等待时间最长
的消息。
不幸的是,上面的队列方法是『不安全』的,因为在这个过程中,一个客户端可能在取出一个消息之后崩
溃,而未处理完的消息也就因此丢失。
使用
RPOPLPUSH 命令 ( 或者它的阻塞版本 BRPOPLPUSH ) 可以解决这个问题:因为它不仅返回一个消
息,同时还将这个消息添加到另一个备份列表当中,如果一切正常的话,当一个客户端完成某个消息的处理
之后,可以用
LREM 命令将这个消息从备份表删除。
最后,还可以添加一个客户端专门用于监视备份表,它自动地将超过一定处理时限的消息重新放入队列中去
( 负责处理该消息的客户端可能已经崩溃 ) ,这样就不会丢失任何消息了。

猜你喜欢

转载自blog.csdn.net/aa1358075776/article/details/80960687