Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 安裝 Memcached 服務端與 PHP 擴充完整教學

編輯:Linux 教學

前言

Memcached 是高效能分散式記憶體快取系統,廣泛用於緩解資料庫壓力、加速網頁回應。本文涵蓋 libevent 依賴處理、Memcached 服務端編譯安裝、多實例啟動參數、PHP memcache/memcached 擴充安裝、驗證測試全流程。

一、環境準備與依賴安裝


# CentOS/RHEL
yum -y install gcc gcc-c++ make libevent-devel

# Debian/Ubuntu
apt -y install build-essential libevent-dev

# 確認 libevent 版本
pkg-config --modversion libevent   # 應 ≥ 2.0

二、Memcached 服務端編譯安裝


cd /usr/local/src
wget https://memcached.org/latest -O memcached-latest.tar.gz
tar -zxvf memcached-latest.tar.gz
cd memcached-1.6.x

./configure --prefix=/usr/local/memcached --with-libevent=/usr
make -j$(nproc)
make install

# 建立軟連結方便呼叫
ln -sf /usr/local/memcached/bin/memcached /usr/local/bin/memcached

三、服務端啟動參數詳解與多實例範例

參數說明範例
-d守護進程模式-d
-m <MB>記憶體上限(MB)-m 1024
-u <user>運行使用者(需非 root)-u memcached
-l <IP>監聽介面(預設 0.0.0.0)-l 127.0.0.1
-p <port>TCP 連接埠(預設 11211)-p 11211
-U <port>UDP 連接埠(0 關閉)-U 0
-c <conns>最大並發連線(預設 1024)-c 2048
-t <threads>工作執行緒數(預設 4)-t 8
-P <pidfile>PID 檔路徑-P /var/run/memcached.pid
-vv詳細日誌(除錯用)-vv > /var/log/memcached.log 2>&1

單實例啟動腳本(/etc/init.d/memcached 或 systemd)


# systemd 單元檔 /usr/lib/systemd/system/memcached.service
[Unit]
Description=Memcached
After=network.target

[Service]
Type=forking
User=memcached
Group=memcached
EnvironmentFile=-/etc/sysconfig/memcached
ExecStart=/usr/local/bin/memcached -d -u $USER -p $PORT -m $CACHESIZE -c $MAXCONN -P $PIDFILE $OPTIONS
PIDFile=/var/run/memcached/memcached.pid

[Install]
WantedBy=multi-user.target

# /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1 -t 8"
PIDFILE="/var/run/memcached/memcached.pid"

systemctl daemon-reload
systemctl enable --now memcached

多實例範例(不同連接埠、不同記憶體)


# 實例 1:Session 快取(11211,512MB)
memcached -d -u memcached -l 127.0.0.1 -p 11211 -m 512 -c 2048 -t 4 -P /var/run/memcached-11211.pid

# 實例 2:頁面片段快取(11212,1GB)
memcached -d -u memcached -l 127.0.0.1 -p 11212 -m 1024 -c 4096 -t 8 -P /var/run/memcached-11212.pid

四、PHP 擴充安裝(二選一)

擴充 A:memcache(舊、輕量、無序列化支援)


# 透過 PECL
pecl install memcache
# 或手動
cd /usr/local/src
wget https://pecl.php.net/get/memcache-4.0.tgz
tar -zxvf memcache-4.0.tgz
cd memcache-4.0
phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
make && make install

擴充 B:memcached(新、完整、支援 igbinary/msgpack、Binary Protocol)


# 需 libmemcached 庫
yum -y install libmemcached-devel   # 或 apt install libmemcached-dev

pecl install memcached
# 手動編譯同理,configure 加 --enable-memcached --with-libmemcached-dir=/usr

php.ini 啟用


extension=memcache.so
; 或
extension=memcached.so

; 確認 extension_dir 指向正確路徑
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/"

systemctl restart php-fpm   # 或 apache
php -m | grep memcache

五、驗證測試腳本


addServer('127.0.0.1', 11211);

$key = 'test_key';
$val = 'Hello Memcached at ' . date('Y-m-d H:i:s');

$mem->set($key, $val, 60);  // 過期 60 秒
echo "Set: $val\n";

$got = $mem->get($key);
echo "Get: $got\n";

echo $got === $val ? "✅ PASS" : "❌ FAIL";

六、常見問題與調優

  • Connection refused:檢查 -l 綁定 IP、防火牆 firewall-cmd --add-port=11211/tcp、SELinux setsebool -P httpd_can_network_memcache 1。
  • 記憶體不足淘汰率高:stats 指令觀察 evictions、bytes、limit_maxbytes,適度調大 -m。
  • 大數值儲存失敗:單項上限 1MB,大物件需客戶端分片或壓縮。
  • PHP 7.4+ 僅支援 memcached 擴充:memcache 尚未釋出正式相容版,建議統一遷移 memcached。

七、總結

Memcached 部署核心在於 libevent 依賴解決、-m/-c/-t 參數依負載調優、PHP 選擇 memcached 擴充以獲長期支援。配合 systemd 多實例管理、監控 stats 指標,即可構建高可用快取層。

Copyright © Windows教程網 All Rights Reserved