所谓消息队列,即在消息的传输过程中保存消息的容器。最常见的使用场景是,通过引入消息队列来对耗时的任务就行异步处理,以及应对高并发问题,即所谓的削峰作用。在以PHP为主要开发语言的项目中,我们可以选择的软件有很多,最常使用的有三种:基于 Redis 的 List数据类型 来用PHP实现入列出列,基于 Memcached 的扩展应用 MemcacheQ,还有更强大和流行的RabbitMQ

基于 Redis 来实现消息队列,主要是用到 Redis 中的 List 数据类型。下面分别介绍下 Redis 的 List 列表的使用 以及 基于 Redis 的PHP轻量级消息队列 php-resque

phpredis 扩展: https://github.com/phpredis/phpredis

1. Redis 的 List 列表的使用

<?php/** * 基于Redis-List实现的简单消息队列 * @author <mail@phpha.com> *///实例化$redis = new Redis();//连接服务端$redis->connect('127.0.0.1', 6379);//入列$redis->lPush('TestQueue', 'phpha.com');$redis->lPush('TestQueue', 'www.phpha.com');$redis->lPush('TestQueue', 'blog.phpha.com');//出列for($i = 1; $i <= 4; $i++){    //输出队列内信息    $result = $redis->rPop('TestQueue');    var_dump($result);}

输出如下:

string(9) "phpha.com"string(13) "www.phpha.com"string(14) "blog.phpha.com"bool(false)

说明:以上按照先进先出的原则,分别出列了所有的数据。如果列表内数据为空,则 Redis::rPop() 返回 false

2. 基于 Redis 的PHP轻量级消息队列 php-resque

项目地址:https://github.com/chrisboulton/php-resque

2.1 php-resque 中的 3 种角色
  1. Job :一个 Job 就是一个需要再队列中执行的任务,比如发送短信邮件等
  2. Queue :也就是消息队列,基于 Redis 实现
  3. Worker :负责从消息队列中取出任务并执行,以守护进行方式在后台运行
2.2 php-resque 任务执行流程
  1. 创建 Job :在PHP中是独立的 Class (包含所有的业务逻辑处理)
  2. 加入 Queue :将 Job 对应的 Class 以及实例化所需的参数一起放入队列中
  3. 创建 Worker :创建后台守护进程来定时检查队列中的任务并执行

说明:在 php-resque 中,还有一个很重要的设计:一个 Worker,可以处理一个队列,也可以处理很多个队列,并且可以通过增加 Worker 的进程/线程数来加快队列的执行速度。


©著作权归作者所有:来自51CTO博客作者寻儒的原创作品,如需转载,请注明出处,否则将追究法律责任

好知识,才能预见未来

赞赏

0人进行了赞赏支持

更多相关文章

  1. [记录点滴]Redis实现简单消息队列
  2. 关于rabbitmq与kafka的异同
  3. (lintcode)第7题二叉树的序列化和反序列化
  4. 王晓鹏 | 一款实用延迟队列的自研历程
  5. 基于Go语言构建的万亿级流量大数据平台架构|文末彩蛋
  6. BlueStore源码分析之事物状态机
  7. springboot研究五:springboot整合rabbitmq
  8. 【故障处理】队列等待之TX - allocate ITL entry引起的死锁处理(
  9. 【故障处理】队列等待之enq: US - contention案例

随机推荐

  1. android程序在Layout中设置控件水平或垂
  2. Android TextView 文字居中
  3. android 布局文件详解
  4. linux ubuntu android SDK安装
  5. Android系统自带样式(@android:style/)
  6. android layout 属性大全
  7. Android修改默认控件焦点不highlight
  8. Android EditText inputType同时设置text
  9. 安装Android Studio——Installing Andro
  10. Android SDK下载