`
start_p
  • 浏览: 65359 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

node.js使用redis作为缓存

阅读更多

    首先,参考官方文档安装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实际命令需要几个参数来传递,至于回调函数可以省略,程序会自动加上默认的。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics