您的位置:首页 > 数据库 > Redis

redis 的消息队列

2016-12-14 14:28 302 查看
       每当提到“消息队列”,可能脑海中最快的反应是:kafka和activeMq,但是最近偶然间发现redis有作为简单的消息队列的功能。所以整理一下跟大家分享分享。

一、消息队列的场景

      我们都知道,消息是在两台计算机之间传送的数据单位,这个“消息”可以非常简单,例如只包含文本字符串,也可以更复杂,可能包含嵌入对象。而所谓的“消息队列”是在消息的传输过程中保存消息的容器。在web程序中,可能我们需要将用户的请求数据更新或者添加到数据库中,但是在高炳发的情况下,虽然作为用户的我们不知道后台是什么原因,但是依旧会抱怨或者吐槽这个程序反应缓慢,比如在过去的几年里,你有没有吐槽过12306抢票很难?反应很慢?有没有在使用某个程序的时候收到“service
is too busy”,而这其实是因为当时的并发访问过量,超过了系统的最大负载能力。当然我们可以通过添加服务器集群中服务器的数量来增加程序的负载能力。

      但相对来讲,添加消息队列好像成本会比增加服务器数量更低一些:



      从上面的结构图可以发现,添加了消息队列其实是使用了异步的方式,图中第3步的接受响应是向消息队列服务器发送消息成功的反馈;

     使用redis的消息队列的话,对应很多的用户请求(每个请求都会处于一个事务之中),消息队列的服务器中会有一个进程单独对凶案西队列进行处理,首先判断消息队列中是否有待处理的消息,如果有,则将其取出(出队列操作:先进先出的顺序,保证事务的准确性)。



     看到这个图,大家有没有联想到“生产者和消费者模式”??简单的说,客户端不同用户操作的操作请求就是生产者,他们将要处理的事务存储到消息队列中,然后消息对列服务器的某个进程不停地将要处理的单个事务从消息队列中一个一个地进行相应处理。而这就是我们熟悉的消费者和生产者模式的过程吗??

     先简单进行到这里,之后小编会将消息队列的实例更新到博客中。希望能帮到正在阅读的你哦!

                 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 消息队列 redis