• 如何缓存hbase数据以减少下次取数据的时间


    缓存从hbase取得的数据的好处是显而易见的,缓存到本地以后,如果下次的输入能够直接从已缓存的本地文件中取得数据就无需再次访问hbase数据库,这样一来数据量大的话可以节省大量的访问hbase数据库的时间。

     1 function enterSearch(plate)
     2     {
     3         searchPlateBegin = new Date();
     4         var plateArray = new Array();
     5         var convertReverseArray = new Array();
     6         if(regex_cache[plate] == null)
     7         {
     8 
     9             var strRegEx = convertInput(plate);
    10             var regEx = new RegExp(strRegEx);
    11             regEx.compile(regEx);
    12 
    13 
    14             for (var i = 0;i < keyArrayConvert.length;i++)
    15             {
    16                 if (regEx.test(keyArrayConvert[i]))
    17                 {
    18                     convertReverseArray.push(keyArray[i]);
    19                     plateArray.push(keyArrayConvert[i]);
    20                 }
    21             }
    22 
    23             var cacheFileName = (++write_regex_cache_count).toString() + ".json";
    24 
    25             fs.writeFile("./cache/"+cacheFileName,JSON.stringify(convertReverseArray),function(err){
    26                 if(err) throw err;
    27                 regex_cache[plate] = "./cache/"+cacheFileName;
    28 
    29 
    30             });
    31 
    32             var cacheFileName_convert = (++write_regex_cache_count_convert).toString() + "_decoded.json";
    33 
    34             fs.writeFile("./cache/"+cacheFileName_convert,JSON.stringify(plateArray),function(err){
    35                 if(err) throw err;
    36                 regex_cache_convert[plate] = "./cache/"+cacheFileName_convert;
    37 
    38             });
    39 
    40             searchPlateEnd  = new Date();
    41 
    42         }
    43         else
    44         {
    45             searchPlateEnd  = new Date();
    46             convertReverseArray = JSON.parse(fs.readFileSync(regex_cache[plate],'utf8'));
    47             plateArray = JSON.parse(fs.readFileSync(regex_cache_convert[plate],'utf8'));
    48 
    49         }

    在这里就是做了一个缓存,把convertReverseArray以不同的文件名的形式缓存到cache目录下。每输入一个plate,先去到regex_cache[plate]中寻找有无数据,如果没有数据说明本地没有相对应的数据,就会调用正则表达式从keyArrayConvert中找到相匹配的数据放至regex_cache[plate]中,如果该数据已存在说明本地文件已有该数据,这是跳到else语句执行相关的操作,如果keyArrayConvert包含的数据巨大的话,采用这种方式可以节省大量时间。

  • 相关阅读:
    poj 2312 Battle City
    poj 2002 Squares
    poj 3641 Pseudoprime numbers
    poj 3580 SuperMemo
    poj 3281 Dining
    poj 3259 Wormholes
    poj 3080 Blue Jeans
    poj 3070 Fibonacci
    poj 2887 Big String
    poj 2631 Roads in the North
  • 原文地址:https://www.cnblogs.com/cocos2014/p/4256499.html
Copyright © 2020-2023  润新知