一、为什么使用 Redis?
在使用 Flarum 发帖时,如果你发现:
发布帖子或回复时浏览器一直转圈加载
通知、邮件发送延迟
高并发场景下,响应慢,页面卡顿
这些往往是因为 Flarum 默认同步执行任务,尤其是邮件发送非常耗时,阻塞主进程,用户体验下降。
Redis 在这里的作用:
二、Redis 的三大作用场景
模块 | 作用说明 |
Queue(队列) | 将发送邮件、通知等任务异步处理,避免卡顿,提升发帖响应速度 |
Session(会话) | 登录信息从文件存储迁移至 Redis,提升并发下的稳定性 |
Cache(缓存) | 存储配置、翻译等数据,不过当前 Flarum 利用不充分,收益较低 |
三、Redis 安装与集成方式
你有两种配置方式,推荐使用插件 GB Redis Setup。
✅ 方式一:使用 GB Redis Setup 插件(推荐)
1. 安装插件
composer require glowingblue/redis-setup
2. 设置环境变量(可选)
如果 Redis 运行在默认的本地环境(localhost:6379,无密码),可以跳过此步骤。
否则,在 .env
文件中添加:
REDIS_HOST=172.18.0.1 # 你容器外 Redis 的地址(非 localhost)
REDIS_PORT=6379 # Redis 端口,默认 6379
REDIS_PASSWORD=null # Redis 密码,null 表示无密码
REDIS_DATABASE_CACHE=1
REDIS_DATABASE_QUEUE=2
REDIS_DATABASE_SESSION=3
建议将 Cache、Queue、Session 分配不同的 Redis 数据库,避免冲突。
3. 后台启用插件
🛠️ 方式二:手动安装 blomstra/flarum-redis 并编辑 extend.php
1. 安装依赖
composer require blomstra/flarum-redis
2. 修改 extend.php
基本配置(共用一个数据库):
return [
new Blomstra\Redis\Extend\Redis([
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 1,
])
];
配置不同数据库:
return [
(new Blomstra\Redis\Extend\Redis([
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 0,
]))
->useDatabaseWith('cache', 1)
->useDatabaseWith('queue', 2)
->useDatabaseWith('session', 3)
];
禁用部分功能(如只想用 Session):
return [
(new Blomstra\Redis\Extend\Redis([
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'database' => 1,
]))->disable(['cache', 'queue'])
];
高级配置:连接分布在多个 Redis 主机
return [
(new Blomstra\Redis\Extend\Redis([
'connections' => [
'cache' => [...],
'queue' => [...],
'session' => [...],
],
]))
];
⚠️ 如果你使用 GB Redis Setup 插件,请不要同时修改 extend.php!
四、启动 Redis 队列处理服务
Flarum 的所有队列任务都必须通过命令运行:
php flarum queue:work
后台运行推荐方式:
1. 使用 Supervisor 守护进程:
安装 Supervisor(Debian/Ubuntu)
sudo apt install supervisor
配置文件 /etc/supervisor/conf.d/flarum-worker.conf
:
[program:flarum-queue-worker]
directory=/your/flarum/path
command=php flarum queue:work
autostart=true
autorestart=true
stderr_logfile=/var/log/flarum/queue.err.log
stdout_logfile=/var/log/flarum/queue.out.log
user=www-data
启用并重载配置:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start flarum-queue-worker
五、可选功能:Laravel Horizon 队列管理
1. 安装 Horizon 插件
composer require blomstra/horizon
2. 启动守护进程
php flarum horizon
同样推荐配合 Supervisor
保持后台运行。
3. 启用插件,访问控制面板
访问:
https://your-flarum-site.com/admin/horizon
你将看到:
适用于调试与性能监控。
原文:CPLUS FORUM