zoukankan      html  css  js  c++  java
  • Redis实现简单的消息队列

     

     

    1、问:什么是消息队列?

       答:是一个消息的链表,是一个异步处理的数据处理引擎。

    2、问:有什么好处?

         答:不仅能够提高系统的负荷,还能够改善因网络阻塞导致的数据缺失。

    3、问:用途有哪些?

         答:邮件发送、手机短信发送,数据表单提交、图片生成、视频转换、日志储存等。

    4、问:有哪些软件?

         答:ZeroMQ、Posix、SquirrelMQ、Redis、QDBM、Tokyo Tyrant、HTTPSQS等(linux平台下)。

    5、问:怎么实现?

         答:顾名思义,先入队,后出队;先把数据丢到消息队列(入队),后根据相应的key来获取数据(出队)。

    6、问:Redis可以做消息队列?

         答:首先,redis设计用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列,它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列;另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可;redis能做消息队列还得益于其list对象blpop brpop接口以及Pub/Sub(发布/订阅)的某些接口,它们都是阻塞版的,所以可以用来做消息队列。

    7、问:怎么做(基于ThinkPHP)?

         答:7.1 安装redis,过程(略);

           7.2 安装php-redis扩展,过程(略);

              7.3 贴代码

                              图1 入队

              

                                                 图2 入队结果

              

                                                  图3 出队

              

                                                  图4 出队结果

              

                                                   图5 完整代码

               

    8、小结:redis的lPush命令将一个或多个值插入到列表头部与rPush与rPush相反;rPop命令用于溢出并返回列表的最后一个元素与lPop相反。

  • 相关阅读:
    SQL多表合并查询结果
    无法访问请求的页面,因为该页的数据的相关配置数据无效
    网站运行的时候编译成功但是程序浏览器的页面不会显示怎么回事啊
    EasyUI 在textbox里面输入数据敲回车后查询和普通在textbox输入数据敲回车的区别
    搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇
    Python开发工具安装
    jQuery 插件写法2
    jQuery插件面向对象开发
    Jquery插件学习
    Maven 仓库
  • 原文地址:https://www.cnblogs.com/isuansuan/p/9727033.html
Copyright © 2011-2022 走看看