相比lpop,这个命令主要防止消息丢失的。如果lpop一个队列,然后客户端崩溃了,这时候这个消息就丢失了。官方的描述:可以添加一个客户端专门用于监视备份表,它自动地将超过一定处理时限的消息重新放入队列中去(负责处理该消息的客户端可能已经崩溃),这样就不会丢失任何消息了。那么,怎样判断超过一定时限的消息?我目前是这样做的。1、rpoplpush 队列,比如从A导出,备份到B。2、将得到的队列zadd到一个有序集合zset里面。3、队列完成,使用命令lrem将队列移除出备份队列B。如果进行到1步骤,没有进行到2步骤,那就说明这个队列丢失了。所以我只需要定期查询B里面的队列,是否存在zset里面就行了。貌似没问题。但假如我的检测程序运行在1和2步骤之间,那么就存在误判了。避免这种情况,最好就是官方的描述:“超过一定处理时限的消息重新放入队列中”,比如一个队列,弹出来10秒之后再检测就不会出现这种情况,那么如何判断时间呢?
- 1 回答
- 0 关注
- 804 浏览
添加回答
举报
0/150
提交
取消