首先,参考官方文档安装redis中间件 https://www.npmjs.com/package/redis
npm install redis安装中间件,当然,当你看到npm install hiredis redis这个的时候不要迷惑,hiredis是一个解析器,可以不安装而使用默认的javascript解析。
var redis = require("redis"),
client = redis.createClient();
// if you'd like to select database 3, instead of 0 (default), call
// client.select(3, function() { /* ... */ });
client.on("error", function (err) {
console.log("Error " + err);
});
client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});
上面代码是从文档中拷过来的,你可以把这段代码放进自己的项目中测试其实是没有问题的,但是可能有一个问题,就是当你自己在webstorm中敲代码hset的时候好像提示不存在这个函数,然后就感觉不会再爱了,连个提示都没有,难道就提供了set一个方法吗?其实不是,如果你去看源代码会看到一个数组里提供了所有redis自己的命令,所以,在redis命令行里可以使用的命令在node中间件(redis)也可以使用,比如设置key的过期时间我写了测试代码:
client.expire(key, 3, myClient.pri('设置过期时间'));
是可以正常使用的,所以就能举一反三了,其他命令也可以使用类似的放使用,至于这个命令中应该传递几个参数呢?大概可以从以下代码看出来:
RedisClient.prototype[command] = function (args, callback) {
if (Array.isArray(args) && typeof callback === "function") {
return this.send_command(command, args, callback);
} else {
return this.send_command(command, to_array(arguments));
}
};
可以转换为client.command(args,callback),看起来是两个参数,实际是可以传递多个参数的,比如我上面的例子中就传递了3个参数。具体要几个参数我们可以根据redis实际命令需要几个参数来传递,至于回调函数可以省略,程序会自动加上默认的。