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架构的性能,降低数据库负载,改善用户体验。