💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
通过 Redis 建立数据队列常见的有两种方法,一是Redis 本身自带订阅消息队列模型,二是使用 Redis 的 list 数据结构。本文使用 list 数据结构来演示 Redis 数据队列功能。如果复杂的项目中还是更推荐使用 RabbitMQ 来作为数据队列。因为 RabbitMQ 提供的数据队列更完善,比如离线客户端离线,服务器端会保留队列内容,等客户端上线后继续处理。 将创建订单所需数据写入 Redis,避免高并发创建订单给 MySQL 带来压力。 ## 写入队列代码片段 ~~~ $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); $orders = serialize(['user_id' => 1, 'goods_id' => 1]); $redis->lPush('ordersLists', $orders); ~~~ ## 读取队列 异步运行`读取队列`代码片段 ~~~ $redis = new \Redis(); $redis->connect('127.0.0.1', 6379); while (true) { $orders = unserialize($redis->rPop('ordersLists')); // 写入数据库 // ============== // do somthing // ============== if ($redis->lLen('ordersLists') == 0) { sleep(1); } } ~~~ 读取队列代码片段可以使用 Swoole 来运行,如果读取队列代码片段不涉及到多进程/多线程操作,建议使用 ThinkPHP5 自定义命令行来实现后台常驻。