Table of Contents

上一个主题

如何使用独享MySQL服务

下一个主题

如何使用KVDB服务

本页

如何使用Memcached服务

概述

在使用Memcached服务前,您需要先在服务面板里创建自己的Memcached。

以下是和Memcached服务使用相关的环境变量:

MEMCACHE_SERVERS Memcache服务的服务器列表
ACCESSKEY 应用的AccessKey(当前应用的Memcache认证的用户名)
SECRETKEY 应用的SecretKey(当前应用的Memcache认证的密码)

NodeJS

您可以使用任何支持 SASL 的nodejs memcache客户端。我们推荐使用 memjs

安装并添加依赖到package.json:

$ npm install --save memjs

使用:

var memjs = require('memjs');

var mc = memjs.Client.create(process.env.MEMCACHE_SERVERS, {
    username: process.env.ACCESSKEY,
    password: process.env.SECRETKEY,
});

mc.set('foo', 'bar');
mc.get('foo', function (err, value, key) {
    if (value != null) {
        console.log(value.toString());
    }
});

完整代码示例

Go

Java

首先您要选择一个支持SASL协议的客户端,我们推荐您使用 xmemcached 客户端,在 pom.xml 文件中引入即可。

<dependency>
    <groupId>com.googlecode.xmemcached</groupId>
    <artifactId>xmemcached</artifactId>
    <version>2.2.1-beta</version>
</dependency>

使用:

MemcachedClientBuilder builder;
MemcachedClient client;
builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(System.getenv("MEMCACHE_SERVERS")));
builder.addAuthInfo(AddrUtil.getOneAddress(System.getenv("MEMCACHE_SERVERS")), AuthInfo.plain(System.getenv("ACCESSKEY"), System.getenv("SECRETKEY")));
builder.setCommandFactory(new BinaryCommandFactory());
builder.setFailureMode(false);
try {
    client = builder.build();
} catch (IOException e) {
    e.printStackTrace();
}

注解

之前使用的spymemcached的客户端,因为有一个节点选择的bug没有修复,所以这里不推荐了,这里为大家推荐xmemcached,但是这里有个问题,这里的MemcachedClient实例,如果没有特殊的需要,在应用中最好只初始化一个,如果频繁的初始化MemcachedClient实例,可能会导致容器OOM。

Python

您可以使用 pylibmc 来作为Memcache客户端。

安装pylibmc:

$ pip install pylibmc

您需要将 pylibmc 加入 requirements.txt 中,告诉容器云的构建程序在构建的时候安装pylibmc。

使用:

import pylibmc

servers = os.environ.get('MEMCACHE_SERVERS', '').split(',')
user = os.environ.get('ACCESSKEY', '')
password = os.environ.get('SECRETKEY', '')

mc = pylibmc.Client(servers, binary=True,
    username=user, password=pass,
    behaviors={
        "tcp_nodelay": True,
        "no_block": True,

        # 设置get/set的超时时间
        "_poll_timeout": 2000,
    })

mc.set("foo", "bar")
print mc.get("foo")

注解

我们推荐您使用pylibmc来作为Memcache客户端以获取最好的性能,但是pylibmc安装依赖于libmemcached扩展,如果你在本地安装pylibmc有问题,也可以使用一个纯Python的支持SASL的客户端: python-binary-memcached