Table of Contents

上一个主题

独享MySQL

下一个主题

Redis

本页

Memcached

服务概述

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

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

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

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

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

注解

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

API 使用手册

您可以使用 http://sendapatch.se/projects/pylibmc/ 作为 Memcached 服务的客户端。不同之处在于,创建 Client 时不用指定 servers 参数(如果指定了会被忽略)。

pylibmc 接口和 python-memcached 基本兼容,可以直接替换使用。 python-memcache 文档

对于现有使用 python-memcache 的代码,可以直接在 index.wsgi 中(任何 import memcache 语句执行之前)加入如下代码,即可不修改代码使用 pylibmc 了。

import pylibmc
import sys
sys.modules['memcache'] = pylibmc

使用示例

import pylibmc as memcache

mc = memcache.Client()

mc.set("foo", "bar")
value = mc.get("foo")

if not mc.get('key'):
    mc.set("key", "1")
mc.incr("key")