Redis 擴展是 PHP 高性能緩存必備。本文提供 PHP 7 專用安裝指南:Linux 從源碼編譯 phpredis、Windows 下載預編譯 DLL,含驗證與常見錯誤解決。
# 1. 安裝依賴 yum install -y gcc make php7-devel # 或 apt install php7.4-dev # 2. 下載 phpredis PHP 7 兼容版本 cd /usr/local/src wget -c https://github.com/phpredis/phpredis/archive/5.3.4.tar.gz -O phpredis-5.3.4.tar.gz tar zxvf phpredis-5.3.4.tar.gz cd phpredis-5.3.4 # 3. 編譯安裝 /usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-config make -j$(nproc) make install # 4. 啟用擴展 echo "extension=redis.so" > /usr/local/php7/etc/php.d/redis.ini # 5. 重啟 PHP-FPM systemctl restart php7-fpm # 或 service php-fpm restart
php -i | findstr "Thread Safety" → Thread Safety: enabled → TS,disabled → NTS。php_redis-5.3.4-7.4-ts-vc15-x64.zip(示例:PHP 7.4 TS VC15 x64)。php_redis.dll 到 PHP ext 目錄(如 C:\php\ext)。php.ini,添加:extension=redis(無需 .dll 後綴)。# CLI
php -m | grep redis
# redis
# 代碼測試
php -r '$r=new Redis(); $r->connect("127.0.0.1",6379); $r->set("test","hello"); echo $r->get("test");'
# hello
connect('127.0.0.1', 6379);
$key = "vote:article:{$aid}";
$current = $r->incr($key); // 原子自增
// 設置過期時間(7 天),防止鍵永久佔用內存
$r->expire($key, 7 * 24 * 3600);
if ($current >= $updateTill) {
// 達到閾值,異步寫入 MySQL(生產環境建議用隊列)
if ($current > $updateTill) { // 防止重複寫入
require_once __DIR__ . '/db.php';
$pdo->exec("UPDATE articles SET votes = votes + {$updateTill} WHERE id = {$aid}");
// 重置 Redis 計數器(保留餘數)
$r->set($key, $current - $updateTill);
}
}
echo $current; // 返回當前票數供前端顯示
| 問題 | 原因 | 解決 |
|---|---|---|
| phpize: command not found | 未安裝 php-devel / 路徑問題 | yum install php7-devel;用絕對路徑 /usr/local/php7/bin/phpize |
| configure: error: json.h not found | 缺 PHP JSON 擴展開發頭文件 | yum install php7-json-devel / php7.4-dev |
| make 失敗:redis.c: 'zend_class_entry' has no member named 'default_properties' | phpredis 版本與 PHP 版本不匹配 | PHP 7.0-7.4 用 phpredis 5.x;PHP 8.x 用 6.x+ |
| Windows 啟動報錯:無法加載動態庫 php_redis.dll | DLL 版本不匹配(TS/NTS、VC14/VC15、x86/x64) | 嚴格對應 php -i 輸出的版本信息下載 |
| Redis 連接超時 | 防火牆/綁定地址/密碼 | 檢查 redis.conf bind、requirepass、防火牆 6379 端口 |
| PHP 版本 | phpredis 版本 | 備註 |
|---|---|---|
| 7.0 - 7.4 | 5.3.x (最後 5.3.7) | PHP 7.4 官方支持結束 2022-11 |
| 8.0 - 8.2 | 6.0.x | PHP 8.0+ 原生 JIT,性能更強 |
| 8.3+ | 6.1.x+ | 持續更新 |
PHP 7 安裝 Redis 擴展核心在於:版本嚴格對應(phpredis 5.x 對應 PHP 7.x)、Linux 用 phpize 編譯、Windows 嚴格匹配 TS/NTS/VC/架構下載 DLL。生產環境建議升級至 PHP 8.2+ + phpredis 6.x,享受原生 JIT 加速與長期支持。