首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CentOS 7 安裝 Redis 3.0+ 完整步驟:編譯、systemd 服務、防火牆、PHP phpredis 擴展、基本測試

     編輯:PHP 相關知識

CentOS 7 安裝 Redis 3.0+ 完整步驟:編譯、systemd 服務、防火牆、PHP phpredis 擴展、基本測試

本文記錄在 CentOS 7 上從原始碼編譯安裝 Redis、建立 systemd 服務、配置防火牆開放 6379 埠、安裝 PHP phpredis 擴展並進行連線測試的完整流程。

1. 下載、編譯、安裝

# 安裝編譯工具
yum -y install gcc gcc-c++ make

# 下載 (以 7.2.4 為例)
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
tar zxvf redis-7.2.4.tar.gz
cd redis-7.2.4
make
make PREFIX=/usr/local/redis install

# 複製配置檔
mkdir -p /etc/redis
cp redis.conf /etc/redis/redis.conf

2. 修改關鍵配置 (/etc/redis/redis.conf)

bind 0.0.0.0              # 監聽所有介面 (生產請限制內網 IP)
protected-mode no         # 關閉保護模式 (需配合防火牆)
port 6379
daemonize yes             # 後台運行
pidfile /var/run/redis/redis.pid
dir /var/lib/redis        # 資料目錄
appendonly yes            # 開啟 AOF 持久化
maxmemory 2gb             # 記憶體上限
maxmemory-policy allkeys-lru
logfile /var/log/redis/redis.log

建立目錄與權限:

mkdir -p /var/lib/redis /var/log/redis /var/run/redis
useradd -r -s /sbin/nologin redis
chown -R redis:redis /var/lib/redis /var/log/redis /var/run/redis

3. 建立 systemd 服務 (/etc/systemd/system/redis.service)

[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now redis
systemctl status redis

4. 防火牆開放 6379 埠

# firewalld (CentOS 7 預設)
firewall-cmd --permanent --add-port=6379/tcp
firewall-cmd --reload

# 或 iptables (傳統)
iptables -A INPUT -p tcp --dport 6379 -j ACCEPT
service iptables save

5. 基本 CLI 測試

redis-cli ping
# PONG

redis-cli
127.0.0.1:6379> SET name "Redis"
OK
127.0.0.1:6379> GET name
"Redis"
127.0.0.1:6379> QUIT

6. PHP phpredis 擴展安裝 (Windows 開發機 / Linux 伺服器)

Windows (PHP 5.6 TS VC11 x64 範例):

# 下載預編譯 DLL: https://windows.php.net/downloads/pecl/releases/redis/
# 解壓 php_redis.dll 至 php/ext/
# php.ini 加入: extension=php_redis.dll
# 重啟 Apache

Linux (CentOS 7, PHP 7.2+ 範例):

yum -y install php-devel php-pear gcc make
pecl install redis
# 提示 "extension=redis.so" 加入 php.ini
echo "extension=redis.so" > /etc/php.d/redis.ini
systemctl restart php-fpm

7. PHP 連線測試程式碼

connect('192.168.1.100', 6379); // 遠端 Redis IP
$redis->auth('password'); // 若有密碼

$redis->set('site', 'MySite');
echo $redis->get('site'); // MySite

// 管線批次寫入
$pipe = $redis->pipeline();
for ($i=0; $i<1000; $i++) $pipe->set("key:$i", $i);
$pipe->execute();

// Lua 腳本原子操作
$script = "local v = redis.call('GET', KEYS[1]); if v then return redis.call('INCR', KEYS[1]) else return redis.call('SET', KEYS[1], 1) end";
$redis->eval($script, ['counter'], 1);

常見問題排查

問題原因解決
redis-cli 連線被拒絕Redis 未啟動 / bind 配置 / 防火牆systemctl status redis、檢查 bind、firewall-cmd
PHP Class 'Redis' not foundphpredis 擴展未安裝或未載入pecl install redis、php.ini 加入 extension、重啟 php-fpm
AUTH 失敗redis.conf 設定 requirepassPHP 呼叫 $redis->auth('pass') 或配置 masterauth
記憶體用盡maxmemory 未設或過大設定 maxmemory 與 maxmemory-policy
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved