PHP 连接 Memcached 缓存服务完整指南

竹里
竹里
发布时间:2026-10-14 | 6人浏览过
原创

Memcached 是一种高性能的分布式内存对象缓存系统,广泛用于减轻数据库负载。在 PHP 中,通过安装 memcache 扩展并调用相应 API,可以高效地存储和读取各种类型的数据。

准备工作与安装配置

第1步:获取扩展文件

首先需要下载对应 PHP 版本的 php_memcache.dll 文件。确保版本号与你的 PHP 运行环境(如 PHP 7.x/8.x 及线程安全版本)匹配,以免出现加载错误。

第2步:修改 php.ini 配置

将下载好的 php_memcache.dll 放入 PHP 的扩展目录(通常位于 ext/ 文件夹下)。然后打开 php.ini 配置文件,添加以下行以启用该扩展:

extension=php_memcache.dll

保存后重启 Web 服务器(如 Apache 或 Nginx + PHP-FPM),使配置生效。

第3步:验证安装

创建一个新的 PHP 文件,使用 phpinfo() 函数查看输出页面。如果看到名为 “memcache” 的部分,说明扩展已成功加载。

PHP 操作 Memcached 核心代码示例

以下代码展示了完整的生命周期操作,包括连接、添加不同类型的值、查询、替换和删除。

<?php
// 1. 创建 Memcache 对象实例
$mem = new Memcache;

// 2. 连接到 Memcached 服务
// 参数分别为:服务器IP地址,端口号(默认11211)
if (!$mem->connect('10.18.110.213', 11211)) {
    die('连接 Memcached 失败!');
}

// ==========================================
// 3. 添加数据 (Set Operation)
// ==========================================

// A. 添加数组示例
$arr = array("beijing", "tianjin");
// 参数: key, value, 标志(MEMCACHE_COMPRESSED为压缩), 有效期(秒)
if ($mem->set('key1', $arr, MEMCACHE_COMPRESSED, time() + 86400)) {
    echo '数组添加成功';
} else {
    echo '添加失败';
}

// B. 其他数据类型说明
// - 字符串/整数:直接传递即可
// - 对象:需实现 __sleep/__wakeup 或使用 json_encode 序列化
// - 布尔/Null:支持,但需注意业务逻辑中对 false 的处理

// ==========================================
// 4. 查询数据 (Get Operation)
// ==========================================
$val = $mem->get('key1');
var_dump($val); // 输出之前存入的数组

// ==========================================
// 5. 替换数据 (Replace Operation)
// ==========================================
// replace 仅在键已存在时执行;若键不存在则返回 false
if ($mem->replace('key1', 'updated_value', MEMCACHE_COMPRESSED, 60)) {
    echo '替换成功';
} else {
    echo '替换失败(可能键不存在)';
}

// ==========================================
// 6. 删除数据 (Delete Operation)
// ==========================================
if ($mem->delete('key14')) {
    echo 'key14 已删除';
} else {
    echo 'key14 不存在或删除失败';
}
?

关键注意事项

  • 序列化:Memcached 本身不处理复杂对象的序列化。对于数组、对象等复杂结构,建议直接使用 serialize() 和 unserialize(),或者使用 JSON 格式(json_encode/json_decode)以保证兼容性。
  • 过期时间:第三个参数通常为标志位,第四个参数为有效期。可以传入绝对时间戳或相对秒数。
  • 资源类型:如数据库连接资源(resource),无法直接存入 Memcached,必须先关闭连接或转换为具体数据再存储。
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表