可能有node.js redis回退?

时间:2015-03-08 07:57:34

标签: mysql node.js redis

在Laravel中,您可以执行类似

的操作
$object = Cache->remember(key, duration, function() {
 $result = mysql_fetch_something();// retrieve from MySQL here
 return $result;
 });

基本上,Laravel首先检查缓存是否存在,如果不存在,它允许您从数据库中检索值并自动将其放入缓存中,同时返回缓存。节点中是否有类似的构造;也就是说,一站式缓存检查,db故障转移机制?

2 个答案:

答案 0 :(得分:1)

在节点中没有特殊的命令,但您可以自己构建它。

只需检查redis命令EXISTS是否密钥是redis,如果不是,只需检查mysql并存储它。

答案 1 :(得分:0)

你可以做这样的事情。在cache.js

var isCacheAvailable = true;

exports.init = function () {

    var server = config.get('Cache.server');
    var port = config.get('Cache.port');
    client = redis.createClient(port,server);

    // handle redis connection temporarily going down without app crashing
    client.on("error", function (err) {
        logger.error("Error connecting to redis server " + server + ":" + port, err);
        isCacheAvailable = false;
    });

}

exports.isCacheAvailable = function(){
    return isCacheAvailable;
}

检查您要使用缓存的isCacheAvailable()功能。

if(cache.isCacheAvailable()) { 
    // use cache to fetch data
} else {
   // fallback to mysql db
}

希望这有帮助。