使用node_redis在node.js应用程序中使用redis检查缓存密钥是否存在

时间:2014-07-21 09:14:18

标签: node.js redis node-redis

我已经使用node_redis设置了一个应用程序,我正在努力让简单的get / set工作。

我似乎可以插入缓存中,但我希望能够检查密钥是否存在。

在C#中我会做类似的事情:if(Cache["mykey"] == null)

如何进行检查?我应该用{<1}}替换什么?

我的代码

if(!client.get[cacheKey]) {

1 个答案:

答案 0 :(得分:2)

这里要注意的最重要的事情是redis客户端与节点中的大多数其他东西一样,不是同步的。

您访问client.get的方式意味着它是Javascript中的数组。它实际上是一个函数,如mongoose.find,它希望将回调作为最后一个参数。在这种情况下,您只需先传递cacheKey。您的if子句进入回调。

client.get(cacheKey, function(err, data) {
    // data is null if the key doesn't exist
    if(err || data === null) {
        mongoose.model('users').find(function(err,users) {
            console.log('Setting cache: ' + cacheKey);
            client.set(cacheKey,users,redis.print);
            res.send(users);
        });
    } else {
        return data;
    }
});

如果你有任何代码跟在你的if语句之后,就好像它是同步的那样,它很可能也会进入回调函数。