PHPackages                             wood/redis-queue - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. wood/redis-queue

ActiveLibrary[Queues &amp; Workers](/categories/queues)

wood/redis-queue
================

v1.0.2(2w ago)21↓100%Apache-2.0PHPPHP &gt;=8.3

Since May 19Pushed 2w agoCompare

[ Source](https://github.com/SimpleWood217/redis-queue)[ Packagist](https://packagist.org/packages/wood/redis-queue)[ RSS](/packages/wood-redis-queue/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (3)Dependencies (2)Versions (4)Used By (0)

Redis Queue
===========

[](#redis-queue)

基于 PHP + Swoole 协程的轻量级 Redis 消息队列服务，支持延迟消息、自动重试、失败队列等特性。

依赖
--

[](#依赖)

- PHP &gt;= 8.3
- [ext-swoole](https://github.com/swoole/swoole-src)
- [predis/predis](https://github.com/predis/predis) ^3.4

安装
--

[](#安装)

```
composer require wood/redis-queue
```

架构概览
----

[](#架构概览)

系统内部维护三类队列，均基于 Redis 数据结构：

队列Redis 类型说明`queue-waiting:{name}`List待消费队列，消息进入后由消费者 `brpop` 阻塞拉取`queue-delayed`ZSet延迟队列，按到期时间戳排序，到期后自动转移到 waiting 队列`queue-failed`List失败队列，超过最大重试次数或数据损坏的消息落入此处**消息生命周期**：

```
send() ──delay=0──> queue-waiting ──brpop──> consumer.consume()
                        ↑                        │ (异常)
                        │                        ▼
send() ──delay>0──> queue-delayed ──(到期)── 重试/失败处理
                                              │          │
                                    (未超次数) ▼          ▼ (超次数)
                                    queue-delayed    queue-failed

```

CLI 演示工具
--------

[](#cli-演示工具)

项目内置了一个终端演示脚本，方便快速测试和体验：

```
# 查看帮助
php bin/demo help

# 启动消费服务（bootstrap 模式）
php bin/demo bootstrap --host=127.0.0.1 --consumer-dir=./test/Consumer/

# 发送一条消息
php bin/demo send --queue=test --data='{"uid":12345}'

# 发送一条延迟 10 秒的消息
php bin/demo send --queue=test --delay=10

# 运行完整演示（每 2 秒自动发一条消息 + bootstrap 消费）
php bin/demo demo --host=127.0.0.1 --consumer-dir=./test/Consumer/

# 手动订阅模式演示（不使用 bootstrap，手动 subscribe）
php bin/demo demo --host=127.0.0.1 --mode=subscribe
```

> 运行前请确保本地 Redis 服务已启动。

使用方式
----

[](#使用方式)

### 方式一：手动订阅

[](#方式一手动订阅)

适合需要精细控制订阅与回调的场景。

```
