Table of Contents

上一个主题

共享 MySQL、独享 MySQL 对比

下一个主题

Redis

本页

Memcached

服务概述

Memcached 是一个高性能的分布式内存对象缓存系统,可以用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。

Memcached 主要的使用场景有以下两个:

  • 需要共享某些 Key-Value 形式的小数据时。(因为新浪云的 Web 服务是分布式环境,所以使用全局变量方式等方式是不行的)。
  • 缓存 MySQL 等后端存储的数据。快速进行数据响应,减轻后端存储的压力,同时,还可以为这些缓存数据指定过期时间。

Memcached 的实现决定了缓存的数据不是永久有效的,因此应用程序必须有针对 Memcached 失效时的向后端存取数据的重试方案。

您可以在应用管理面板的『存储与 CDN /Memcached 』中创建 Memcached,然后在应用中通过 API 读写 Memcached。

注解

Memcached 不适合存放大文件,目前仅允许存放小于 1MB 的数据。

API使用手册

官方文档: PHP: Memcached - Manual

使用方法和标准的一样,唯一不一样的地方是不用添加服务器地址。

使用示例

<?php
//使用本应用Memcache
$mmc = new Memcached();
if ($mmc == false) {
    echo "mc init failed\n";
} else {
    $mmc->set("key", "value");
    echo $mmc->get("key");
}

?>

PHP7.0及以上版本跨应用授权

假定将应用A授权给B使用,需要从“应用设置” - “跨应用授权”,将A的服务授权给B使用。在应用B操作memcached时,使用A的accesskey连接。

<?php
//使用应用A的accesskey
$mmc = new Memcached("accesskey");
if ($mmc == false) {
    echo "mc init failed\n";
} else {
    $mmc->set("key", "value");
    echo $mmc->get("key");
}

?>

PHP5.3/5.6跨应用授权

假定将应用A授权给B使用,需要从“应用设置” - “跨应用授权”,将A的服务授权给B使用。在应用B操作memcached时,使用A的accesskey连接。

<?php
//使用应用A的accesskey
$mmc = memcache_init($accesskey);
if ($mmc == false) {
    echo "mc init failed\n";
} else {
    memcache_set($mmc, 'key', 'value', 0, 30);
    echo memcache_get($mmc, "key");
}

?>