php使用redis实现消息队列实例

1 简介

项目中使用消息队列的地方很多,一般小型项目我们想用用队列,就不需要搭建专门的队列服务器了,我们直接使用redis即可,基本能实现我们的需求。

2 场景

(1) 缓解服务器压力,将请求换成异步。
(2) 日志收集
(3) 文章列表(不同地方的文章,排序分页使用,这个就不需要消费了)
(4) 秒杀
(5) 等等,都可以使用消息队列

3 步骤

1)redis函数rpush,lpop
2)建议定时任务入队列
3)创建定时任务出队列

4 例子

(1) 入队列 demo.php

<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$password = '123456';
$redis->auth($password);
$arr = array('h','e','l','l','o','w','o','r','l','d');
foreach($arr as $k=>$v){
$redis->rpush("mylist",$v);
}

(2) 定时出队列 index.php

<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$password = '123456';
$redis->auth($password);
//list类型出队操作
$value = $redis->lpop('mylist');
if($value){
echo "出队的值".$value;
}else{
echo "出队完成";
}
?>

(3) 建立定时任务

*/1 * * * * php /wwwroot/redis/index.php
*/3 * * * * php /wwwroot/redis/demo.php
注意:执行tail -f /var/log/cron 查看定时任务执行情况

(4) 查看队列的结果

命令:lrange mylist 0 -1
注意:可以使用命令查看队列里数据的情况


相关推荐

  • 生成图片

    from PIL import Image, ImageColor, ImageDraw, ImageFont, ImageFilterdef create_image_with_text(size, color, text, font_path, font_size, text_color, shadow_color, output_path): """ Create a new image of specified size and color with centered text that has a border and shadow. :param size: A tuple con

  • 获取指定目录下的所有图片信息

    1 获取指定目录下的所有图片信息// 获取指定目录下的所有图片信息 public function getImagesInfo($directory) { $images = []; // 创建递归目录迭代器 $iterator = new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY ); // 遍历目录中的每个文件 foreach (

  • Thinkphp各版本的PHP要求

    ThinkPHP 8.0:运行环境要求PHP8.0+,兼容PHP8.3ThinkPHP 6.1:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 6.0:运行环境要求PHP7.2+,兼容PHP8.1ThinkPHP 5.1:运行环境要求PHP5.6+,兼容PHP8.0ThinkPHP 5.0:运行环境要求PHP5.4+,兼容PHP7.3