必须先安装hiredis开发库并执行sudo ldconfig,再重新编译swoole时显式指定--enable-async-redis和正确php-config路径,否则php --ri swoole不显示async redis client => enabled且swoole_redis类不存在。

必须先装 hiredis,再重新编译 Swoole 并启用 --enable-async-redis,否则 swoole_redis 类根本不会存在,调用直接报 Class 'swoole_redis' not found。
为什么 php --ri swoole 不显示 “async redis client => enabled”
最常见原因是没装 hiredis 开发库,或装了但系统找不到头文件/动态库。
-
libhiredis-dev(Ubuntu/Debian)或libhiredis-devel(CentOS/RHEL)必须安装,仅装redis-server不够 - 源码编译
hiredis后,务必执行sudo ldconfig,否则 Swoole configure 阶段可能检测失败,或运行时找不到libhiredis.so - 如果
php --ri swoole输出里压根没有 “async redis client” 这一行,说明编译时该选项未生效——不是配置漏了,就是hiredis路径未被识别
./configure 时的关键参数和陷阱
路径错一个字符,--enable-async-redis 就形同虚设。
Swoole 6.1.1 是一个专为 PHP 设计的高性能事件驱动并发网络引擎。作为稳定版,它修复了编译时对 zlib 依赖的缺失及 curl 模块的内存安全风险。该版本支持协程、多线程与多进程架构,内置 TCP/HTTP/WebSocket 服务器,能够显著提升 PHP 在微服务、实时通信等场景下的执行效率与并发能力。
- 必须指定准确的
php-config路径:--with-php-config=/usr/local/php/bin/php-config(替换成你实际的 PHP 安装路径) -
--enable-async-redis必须显式写出,不能省略;Swoole 4.0+ 默认不开启,且不再兼容旧版swoole_redis的回调写法 - 执行前务必
make clean,否则旧编译缓存可能导致新选项被忽略 - configure 成功后,末尾应看到类似
checking for hiredis support... yes,否则回头检查hiredis安装
验证是否真正可用:别只看 php --ri swoole
即使输出里有 “async redis client => enabled”,也不代表能用。必须实测连接和命令。
- 写个最小脚本:
$redis = new swoole_redis(); $redis->connect('127.0.0.1', 6379, function($redis, $result) { var_dump($result); }); - 如果报
Fatal error: Uncaught Error: Class 'swoole_redis' not found,说明 Swoole 编译未生效,或 PHP 加载的是旧版本swoole.so - 如果连接回调里
$result === false,先确认 Redis 进程在跑,再检查防火墙、bind 配置(如bind 127.0.0.1是 OK 的)
最容易被跳过的环节是 ldconfig 和 make clean ——这两个动作不执行,90% 的“启用了却用不了”问题就出在这儿。










