nodejs读取memcache示例分享

  

复制代码 代码如下:

  var memcache = require('memcache')

  , http = require('http')

  , url = require('url')

  , qs = require('querystring')

  , memsettings = { port: 2000, host: '10.6.0.6' }

  , httpsettings = { port: 3000 }

  , cacheObject = {}

  , httpserver

  , client

  , requestHandler;

  client = new memcache.Client(memsettings.port, memsettings.host);

  //...

  client.on('connect', function(){

  client.connected = true;

  });

  client.on('close', function(){

  // no arguments - connection has been closed

  client.connected = false;

  });

  function getData(key, wrapper, res){

  client.get(key, function(error, result){

  // all of the callbacks have two arguments.

  // 'result' may contain things which aren't great, but

  // aren't really errors, like 'NOT_STORED'

  if(!error){

  if(result){

  cacheObject[key] = result;

  res.write( wrapper + '(' + result + ')');

  } else {

  res.write('no data');

  }

  res.end();

  }

  });

  /*if(cacheObject[key]){

  response.write(cacheObject[key]);

  response.end();

  } else  {

  client.get(key, function(error, result){

  // all of the callbacks have two arguments.

  // 'result' may contain things which aren't great, but

  // aren't really errors, like 'NOT_STORED'

  if(!error){

  cacheObject[key] = result;

  cacheObject[key]['timeoutId'] = setTimeout(function(){

  client.get(key, function(error, result){

  if(!error){

  cacheObject[key] = result;

  }

  });

  });

  response.write(result);

  response.end();

  }

  });

  }*/

  }

  httpserver = http.createServer(function(req, res){

  var urlObj, queryObj;

  urlObj = url.parse(req.url);

  res.writeHead(200, {"Content-Type":"text/javascript; charset=utf-8"});

  queryObj = qs.parse(urlObj.query);

  path = queryObj.pathname;

  if(queryObj.gid){

  getData(queryObj.gid, queryObj.callback||'callback', res);

  } else {

  res.write('no input');

  res.end();

  }

  /*

  switch(urlObj.pathname){

  case '/pai':

  res.write(urlObj.pathname);

  break;

  case '/qiang':

  res.write(urlObj.pathname);

  break;

  default:

  res.write('default');

  break;

  }

  res.end();

  */

  });

  client.connect();

  httpserver.listen(httpsettings.port);

  console.log('http server listening on ' + httpsettings.port);