消息队列 所谓的"消息队列"就是:在消息的传输过程中保存消息的容器。上次有朋友面试,面试官就问,redis可以用作消息队列吗?当时一懵。每当想到消息队列:我们都会想到 RabbitMQ , ActiveMQ ,RocketMQ,等等一些专业的消息中间件。但是如果我们做的事情比较简单业务逻辑不是很复杂,只需要有一个消息队列,使用专业的消息中间件是非常麻烦的,因此我们可以使用Redis做消息队列。 如果对消息的可靠性没有较高的要求的话,那么就可以使用Redis去实现。 Redis做消息队列,可以使用List这个数据类型。List里面有两个命令, lpush/rpush 操作来实现 入队 ,然后使用 lpop/rpop 实现 出列 。 在客户端中,我们会 维护一个死循环来不停的从队列中pop读取数据 ,如果队列中有消息,则直接读取,如果没有,就会陷入死循环,直到下一次有消息进入。这种死循环会造成大量的资源浪费,这个时候我们可以使用, blpop/brpop 去处理,相当于lpop的阻塞,当没有消息到来的时候就会休眠,直到消息来临,才唤醒,pop去读取数据。 在java中可以使用while循环去实现 。 延迟消息队列 延迟消息队列,可以用zset实现,里面有 score 分数浮动数值,数据 可以根据 core 排序,zset可用于高效的检索,我们可以将时间作为score