# Memcached：只在受控网络中提供缓存

Memcached 保存缓存，不能代替数据库。缓存丢失后应用应能重新读取真实数据。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/memcached/

## 1. Memcached 保存可丢弃的缓存

Memcached 把热点数据暂存在内存中，减少重复计算或数据库查询。它不是持久数据库，重启、淘汰或容量不足都可能让缓存消失。应用应能在缓存未命中时回到原始数据源，不能把唯一业务数据只放在缓存里。

安装前确认应用或插件支持 Memcached。安装了服务并不意味着 WordPress 自动开始使用对象缓存，还需要对应客户端扩展和集成配置。

## 2. 从发行版软件源安装

以下以 Ubuntu/Debian 为例。安装前记录已有服务，避免启动两个占用同一端口的实例。

```bash
sudo apt update
sudo apt install memcached
systemctl status memcached
```

优先使用受维护的软件包，除非有明确版本需求，不必沿用旧教程从源码编译。源码安装需要自行管理更新、服务用户、配置与卸载路径，维护成本更高。

## 3. 只监听受控地址并设置容量

检查发行版的 Memcached 配置或 systemd 启动参数，常见关键项如下。它们是启动参数示例，写入方式以实际包的配置格式为准。

```text
-l 127.0.0.1
-p 11211
-U 0
-m 128
```

这表示仅本机 TCP 11211、关闭 UDP、项目存储内存预算 128 MiB。`-m` 不是进程总内存硬上限，连接和元数据还会占空间。小内存实例要给数据库、PHP 和系统留余量。

不要把 11211 直接暴露到互联网。跨主机使用时选择受控私网并限制来源，不能只因为配置了认证就忽略网络隔离。

## 4. 连接应用并验证命中

```bash
sudo ss -lntup | grep 11211
```

监听地址应与设计一致。应用侧配置同一地址和端口；容器中的 `127.0.0.1` 指容器自己，跨容器通常使用内部服务名。PHP 需要匹配当前 PHP-FPM 版本的客户端扩展，不只是 CLI 扩展。

用应用写入一个短期测试键，再读取，随后重复访问同一页面并查看缓存命中统计。不要把“服务处于 active”当作应用已接入的证明。测试键应设置过期时间，不包含秘密。

## 5. 更新与排错关注淘汰和连接

命中率低可能是缓存键不断变化、TTL 太短或容量不足；内存淘汰多也不一定需要无限扩容，应先看实际热点数据。应用报连接失败时检查监听、网络、客户端配置和服务日志。

重启前确认应用能承受冷缓存，避免同时清空页面缓存和对象缓存造成数据库突增。更多见[WordPress 性能优化](https://stock.iftalking.com/guides/wordpress-performance/)、[内存检查](https://stock.iftalking.com/guides/memory-swap/)和[私有网络](https://stock.iftalking.com/guides/private-network-rdns/)。


## 完成后检查

用户退出、权限变化和内容更新后，都应检查缓存不会继续泄露或显示旧数据。

## 参考资料

- [docs.memcached.org · 项目文档](https://docs.memcached.org/)
