zoukankan      html  css  js  c++  java
  • 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);
    

      

  • 相关阅读:
    开源界的 5 大开源许可协议
    如何选择开源许可证?
    Ubuntu下Qt编译报错“cannot find -lGL”的解决方案
    How to Cracked Sublime Text 3 Build 3065 in Ubuntu (Linux)
    一个C语言宏展开问题
    C语言预处理运算符
    Linux线程编程之信号处理
    Linux终端多用户通信实用命令
    守护进程接收终端输入的一种变通性方法(二)
    通过printf设置Linux终端输出的颜色和显示方式
  • 原文地址:https://www.cnblogs.com/arliang/p/Node_read_memcache.html
Copyright © 2011-2022 走看看