这是一个为 node.js 开发的 memcached 客户端,使用二进制传输协议,支持 SASL 鉴权。特别针对阿里云 OCS 进行优化。
安装:
npm install node_memcached
从 0.2.x 版本迁移的开发者请注意,在所有的命令返回中不再使用 res.val.toString() 得到数据,直接使用即可:
client.get('key', function(err, res) {
// 不要这样
console.log(res.val.toString());
})
client.get('key', function(err, res) {
// 直接获取数据
console.log(res);
})
var PORT = 11211;
var HOST = '127.0.0.1';
var username = 'myname';
var password = 'mypass';
var memcached = require("node_memcached");
var client = memcached.createClient(PORT, HOST, {
username: username,
password: password
});
client.on("error", function (err) {
console.log("Error " + err);
});
// 10 为过期时间, 10秒
client.set('hello', 'world', 10);
client.get('hello', function(err, res) {
console.log(err, res);
});
// 也可以不用设置过期时间
client.set('number', 1);
client.increment('number', 2);
client.decrement('number', 1);
client.get('number', function(err, res) {
console.log(err, res);
});
client
会发送以下事件.
client
在与 memcached 服务器建立连接后发送 'connect' 事件, 但并不代表 client
已经可以向 memcached 发送命令。
client
在发送 connect
事件后, 如果设置了 username 和 password,那么将在 SASL 鉴权 成功后发送 ready
事件,
否则会立即发送 ready
事件。 在 ready
事件之前,所有的命令都会被加入队列,一旦 ready
发送, 这些命令将会依次执行。
client
会在遇到无法处理的错误时发送 error
事件。
注意,在 node 中 error
是一个特殊的事件,如果 cliet
发送了这个事件而没有被侦听,那么将会导致 node 进程退出。因此
你应该在创建 client
的时候主动侦听该事件并作出相应处理。例如:
var client = Memcached.createClient();
client.on('error', function(err) {
log('Error', err)
})
client
会在与 memcached 断开连接后发送 end
事件。
redis.createClient() = redis.createClient(PORT, HOST);
redis.createClient() = redis.createClient(PORT, HOST, { username: '', password: '' })
PORT
: memcached 服务器的端口号,默认为 11211HOST
: memcached 服务器的 IP 地址,默认为 127.0.0.1username
: 如果设置了该项,则启用 SASL 鉴权,否则直接连接 memcached 服务器。password
: 如果设置了该项,则启用 SASL 鉴权,否则直接连接 memcached 服务器。
createClient()
将返回一个 MemcachedClient
对象.
强制关闭 client
与 memcached 服务器之间的连接。
在 client
断开连接后,如果开发者没有调用 client.end(),则 client
将会自动尝试重新连接 memcached 服务器,初始延时为 150ms,
重连失败后延时加长,最长为 1 分钟并且会持续尝试直到连接成功。
在运行 node 之前输出环境变量 DEBUG=node_memcached 将会打印调试信息。