Ubuntu LAMP架構中緩存技術的應用與配置
在Ubuntu LAMP(Linux + Apache + MySQL + PHP)架構中,緩存技術是提升應用性能、減少數據庫負載的關鍵手段。常見的緩存類型包括對象緩存(Memcached/Redis)、HTTP加速(Varnish)和PHP opcode緩存(APCu),以下是具體使用方法:
Memcached是LAMP架構中最常用的對象緩存工具,適用于緩存數據庫查詢結果、會話數據等,減少對MySQL的直接訪問。
sudo apt update
sudo apt install memcached php-memcached
編輯配置文件/etc/memcached.conf
,調整以下參數:
-m 64
:分配64MB內存(根據服務器內存調整,建議為總內存的10%-20%);-l 127.0.0.1
:僅允許本地訪問(生產環境可改為服務器IP,但需注意安全)。sudo systemctl start memcached
sudo systemctl enable memcached # 開機自啟
<?php
// 連接Memcached服務器
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);
$key = 'user_profile_123'; // 緩存鍵名
$data = $memcached->get($key); // 嘗試獲取緩存
if ($data === false) {
// 緩存未命中,從數據庫獲取數據
$data = fetchUserDataFromMySQL(123); // 自定義函數,替換為實際數據庫查詢
$memcached->set($key, $data, 3600); // 緩存1小時(3600秒)
}
echo $data; // 輸出數據
?>
Redis相比Memcached支持更豐富的數據結構(字符串、哈希、列表等),適合復雜緩存場景(如會話存儲、排行榜)。
sudo apt update
sudo apt install redis-server php-redis
編輯配置文件/etc/redis/redis.conf
:
bind 127.0.0.1
:限制訪問IP(生產環境可改為服務器IP);requirepass yourpassword
:設置訪問密碼(增強安全性)。sudo systemctl start redis-server
sudo systemctl enable redis-server
<?php
// 連接Redis服務器
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('yourpassword'); // 輸入密碼(若配置了密碼)
$key = 'product_stock_456'; // 緩存鍵名
$data = $redis->get($key); // 嘗試獲取緩存
if ($data === false) {
// 緩存未命中,從數據庫獲取數據
$data = fetchProductStockFromMySQL(456); // 自定義函數,替換為實際數據庫查詢
$redis->set($key, $data, 3600); // 緩存1小時(3600秒)
}
echo $data; // 輸出數據
?>
Varnish作為前端反向代理,緩存靜態或動態頁面內容,減少Apache的請求處理壓力,適用于高流量網站。
sudo apt update
sudo apt install varnish
編輯默認配置文件/etc/varnish/default.vcl
:
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
if (req.http.Cookie ~ "PHPSESSID" || req.http.Authorization) {
return (pass); // 不緩存需要身份驗證的請求
}
if (req.method == "GET" && req.url ~ "\.(jpg|css|js)$") {
return (hash); // 緩存靜態資源
}
}
sudo systemctl start varnish
sudo systemctl enable varnish
注意:Varnish默認監聽80端口,需修改Apache端口(如8080)以避免沖突,或調整Varnish配置中的.port
參數。
APCu用于緩存PHP opcode(編譯后的代碼)和用戶數據,適合單個PHP進程的快速訪問,提升PHP執行效率。
sudo apt update
sudo apt install php-apcu
編輯php.ini
文件(路徑可通過php --ini
查看),添加:
extension=apcu.so
apc.enabled=1
apc.shm_size=64M # 分配64MB共享內存(根據需求調整)
<?php
$key = 'config_settings';
$data = apcu_fetch($key); // 嘗試獲取緩存
if ($data === false) {
// 緩存未命中,從配置文件或數據庫獲取數據
$data = loadConfigFromFiles(); // 自定義函數,替換為實際配置加載邏輯
apcu_store($key, $data, 86400); // 緩存1天(86400秒)
}
print_r($data); // 輸出配置數據
?>
redis-cli info
、memcached-tool
等命令監控緩存命中率、內存使用情況,及時調整配置。通過以上緩存技術的組合使用,可顯著提升Ubuntu LAMP架構的性能,降低數據庫負載,改善用戶體驗。