如何使用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 。