本教程适用于以下操作系统版本
- Ubuntu 24.04 (Noble Numbat)
- Ubuntu 22.04 (Jammy Jellyfish)
- Ubuntu 20.04 (Focal Fossa)
- Ubuntu 18.04 (Bionic Beaver)
本页内容
- 环境要求
- 在 Ubuntu 22.04 上安装 Memcached
- 安装 PHP Memcached 扩展
- 通过身份验证保护 Memcached
- 验证 Memcached 身份验证
- 为 Python 安装 Memcached
- 结语
Memcached 是一个免费、开源且通用的分布式内存缓存系统,用于缓存数据库数据。它是一个高性能的内存缓存系统,通过减轻数据库负载来加速动态 Web 应用程序。Memcached 由四个组件构成,使客户端和服务器能够协同工作,尽可能高效地提供缓存数据。它为 PHP、Java、C/C++、Python、Ruby、Perl 等所有主流语言提供 API 集成。
本教程将向你展示如何在 Ubuntu 22.04 服务器上安装 Memcached 服务器,以及如何在 PHP 中使用它。
环境要求
- 一台运行 Ubuntu 22.04 的服务器。
- 服务器上已配置 root 密码。
在 Ubuntu 22.04 上安装 Memcached
默认情况下,Memcached 软件包已包含在 Ubuntu 默认仓库中。你可以使用以下命令轻松安装:
apt install memcached libmemcached-tools -y
Memcached 安装完成后,使用以下命令启动 Memcached 服务:
systemctl start memcached
你可以使用以下命令检查 Memcached 的状态:
systemctl status memcached
你应该会看到类似以下输出:
? memcached.service - memcached daemon
Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-10-18 13:09:47 UTC; 29s ago
Docs: man:memcached(1)
Main PID: 5525 (memcached)
Tasks: 10 (limit: 2242)
Memory: 1.7M
CPU: 71ms
CGroup: /system.slice/memcached.service
??5525 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
Oct 18 13:09:47 ubuntu2204 systemd[1]: Started memcached daemon.
要验证 Memcached 版本,请运行以下命令:
memcached -V
你将看到类似以下输出:
memcached 1.6.14
默认情况下,Memcached 监听 11211 端口。你可以使用以下命令验证:
ss -plunt | grep memcache
你应该会看到类似以下输出:
tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=5525,fd=22))
安装 PHP Memcached 扩展
为了在基于 PHP 的应用程序中使用 Memcached,你需要为服务器安装 PHP Memcached 扩展。你可以使用以下命令配合 Apache 进行安装:
apt install apache2 php libapache2-mod-php php-memcached php-cli -y
接下来,创建一个示例 PHP 测试页面来验证 Memcached:
nano /var/www/html/info.php
添加以下代码:
<?php phpinfo();
保存并关闭文件,然后重启 Apache 服务以使更改生效:
systemctl restart apache2
接下来,打开你的 Web 浏览器,使用 URL http://your-server-ip/info.php 访问该 PHP 页面。你应该在以下屏幕上看到 Memcached:

接下来,创建另一个 PHP 测试页面,以验证 Memcached 是否正常工作。
nano /var/www/html/test.php
添加以下代码:
<?php
try
{
$memcached = new Memcached();
$memcached->addServer("127.0.0.1", 11211);
$response = $memcached->get("key_cache");
if($response==true)
{
echo "Result coming from caching";
echo $response;
}
else
{
echo "Cache is not created yet, reload again to see changes";
$memcached->set("key_cache", "Hooray! Memcache is working now ...") ;
}
}
catch (exception $e)
{
echo $e->getMessage();
}
?>
保存并关闭文件,然后打开你的 Web 浏览器,使用 URL http://your-server-ip/test.php 访问该 PHP 测试页面。你应该会看到类似以下屏幕:

接下来,再次重新加载页面。这一次页面将从缓存内存中加载,如下所示:

通过身份验证保护 Memcached
建议使用简单认证与安全层(SASL)通过基于用户的身份验证来保护 Memcached。为此,你需要在服务器上安装 sasl2-bin 软件包。
apt install sasl2-bin
接下来,为 SASL 身份验证创建一个目录和配置文件:
mkdir -p /etc/sasl2
nano /etc/sasl2/memcached.conf
添加以下行:
log_level: 5 mech_list: plain sasldb_path: /etc/sasl2/memcached-sasldb2
保存并关闭文件,然后创建一个带有用户凭据的 SASL 数据库:
saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 user1
如下所示设置你的密码:
Password: Again (for verification):
接下来,更改 Memcached 数据库的所有权:
chown memcache:memcache /etc/sasl2/memcached-sasldb2
接下来,使用以下命令验证 Memcached:
memcstat --servers="127.0.0.1"
你应该会看到类似以下输出:
Server: 127.0.0.1 (11211) pid: 5525 uptime: 462 time: 1666099048 version: 1.6.14 libevent: 2.1.12-stable pointer_size: 64 rusage_user: 0.110123 rusage_system: 0.093906 max_connections: 1024 curr_connections: 1 total_connections: 4 rejected_connections: 0 connection_structures: 2 response_obj_oom: 0 response_obj_count: 1 response_obj_bytes: 49152 read_buf_count: 6 read_buf_bytes: 98304 read_buf_bytes_free: 32768 read_buf_oom: 0 reserved_fds: 20 cmd_get: 2 cmd_set: 1 cmd_flush: 0 cmd_touch: 0 cmd_meta: 0 get_hits: 1 get_misses: 1 get_expired: 0 get_flushed: 0 delete_misses: 0
接下来,编辑 Memcached 配置文件:
nano /etc/memcached.conf
添加以下行:
-S -vv
保存并关闭文件,然后重启 Memcached 服务以使更改生效:
systemctl restart memcached
接下来,使用以下命令验证 SASL 支持:
journalctl -u memcached |grep SASL
如果一切正常,你将看到类似以下输出:
Journal file /var/log/journal/d97e195db6584d63aeedfdc35dc83c7f/user-1000.journal is truncated, ignoring file. Oct 18 13:18:19 ubuntu2204 systemd-memcached-wrapper[14980]: Initialized SASL.
验证 Memcached 身份验证
首先,尝试在不进行身份验证的情况下再次检查与 Memcached 的连接:
memcstat --servers="127.0.0.1"
该命令不应产生任何输出。输入以下 shell 命令以检查其状态:
echo $?
你应该收到以下状态码,表示 memcstat 命令执行失败。
1
接下来,通过指定用户名和密码再次运行 Memcached 命令:
memcstat --servers="127.0.0.1" --username=user1 --password=password
你将看到类似以下输出:
Server: 127.0.0.1 (11211) pid: 14980 uptime: 46 time: 1666099143 version: 1.6.14 libevent: 2.1.12-stable pointer_size: 64 rusage_user: 0.077843 rusage_system: 0.049072 max_connections: 1024 curr_connections: 1 total_connections: 3 rejected_connections: 0 connection_structures: 2 response_obj_oom: 0 response_obj_count: 1 response_obj_bytes: 16384 read_buf_count: 3 read_buf_bytes: 49152 read_buf_bytes_free: 16384 read_buf_oom: 0
为 Python 安装 Memcached
如果你想将 Memcached 与基于 Python 的 Web 应用程序集成,那么你需要为 Python 安装 Memcached 扩展。你可以使用以下命令安装:
apt install python3-pip
pip install pymemcache
pip install python-memcached
结语
在本文中,我们介绍了如何在 Ubuntu 22.04 上安装 Memcached 服务器,还介绍了如何通过基于 SASL 的身份验证来保护 Memcached。希望你现在能够将 Memcached 与你的应用程序集成,以提升应用程序性能。如果你有任何疑问,欢迎向我提问。