Memcached是一个高性能的分布式内存对象缓存系统,用于加速动态Web应用程序,通过减轻数据库负载来提高性能。它将数据存储在内存中,提供快速的键值存储和检索。
# Ubuntu/Debian
sudo apt-get install memcached
# CentOS/RHEL
sudo yum install memcached
# Ubuntu/Debian
sudo apt-get install php-memcached
# CentOS/RHEL
sudo yum install php-pecl-memcached
安装完成后重启PHP-FPM:
sudo service php-fpm restart
# 或
sudo systemctl restart php-fpm
编辑配置文件(通常位于/etc/memcached.conf
),可根据需要调整参数:
# 监听IP和端口
-l 127.0.0.1
-p 11211
# 内存限制(根据服务器情况调整)
-m 64
# 最大连接数
-c 1024
重启Memcached服务:
sudo service memcached restart
# 或
sudo systemctl restart memcached
<?php
// 创建Memcached实例
$memcached = new Memcached();
// 添加服务器
$memcached->addServer('localhost', 11211);
// 存储数据
$memcached->set('key', 'value', 3600); // 缓存1小时
// 获取数据
$value = $memcached->get('key');
if ($value) {
echo "从缓存获取: " . $value;
} else {
echo "缓存未命中";
// 从数据库获取数据并存入缓存
$value = "从数据库获取的值";
$memcached->set('key', $value, 3600);
}
// 删除数据
$memcached->delete('key');
// 清空所有缓存
$memcached->flush();
?>
addServer($host, $port)
- 添加服务器set($key, $value, $expiration)
- 存储数据get($key)
- 获取数据add($key, $value, $expiration)
- 仅当键不存在时存储replace($key, $value, $expiration)
- 仅当键存在时替换delete($key)
- 删除指定键flush()
- 清空所有缓存increment($key, $offset)
- 增加数值decrement($key, $offset)
- 减少数值Nginx可以直接与Memcached集成,用于缓存静态内容:
server {
listen 80;
server_name example.com;
location / {
set $memcached_key $uri;
memcached_pass 127.0.0.1:11211;
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
prefix:identifier
格式getMulti()
等批量方法减少网络开销stats
命令监控Memcached状态sudo service memcached status
-m
参数值memcached-tool
清理旧数据查看Memcached状态:
echo "stats" | nc localhost 11211
或使用memcached-tool
:
memcached-tool localhost:11211 stats
对于生产环境,建议使用专门的监控工具如Nagios、Zabbix或Prometheus来监控Memcached。
通过合理配置和使用Memcached,可以显著提升LNMP环境下应用程序的性能和响应速度。