BWH Compass

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

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

BWH Compass 编辑整理更新于 约 3 分钟阅读

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 性能优化内存检查私有网络

完成后检查

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

官方资料与相关入口