클라우드 컴퓨팅 & NoSQL/Vert.x & Node.js

빠르게 훝어 보는 node.js - redis 사용하기 (ioredis 클라이언트 버전)

Terry Cho 2016. 3. 30. 11:04

빠르게 훝어 보는 node.js - redis 사용하기 (ioredis 클라이언트 버전)


조대협 (http://bcho.tistory.com)


지난 포스팅에서 http://bcho.tistory.com/1098 node.js에서 redis 사용에 있어서 node-redis 클라이언트를 사용했는데, 조금 더 리서치를 해보니, node.js의 redis 클라이언트는 지난번에 포스팅한 node-redis 클라이언트와 ioredis라는 클라이언트가 가장 많이 사용된다. ioredis 클라이언트가 조금 더 최근에 나온 클라이언트인데, https://github.com/luin/ioredis


Bluebird promise 지원, 트렌젝션 지원등 훨씬 더 많은 기능을 제공하고, 사용법이 node-redis와 거의 유사하여 마이그레이션이 어렵지 않다.

아래 코드는 어제 작성 했던 코드를 ioredis 버전으로 변경한것인데, 코드를 보면 변경 내용이 거의 없음을 확인할 수 있다.


mongodb, redis, mysql 지원 모듈을 살펴보다가 느낀건데, 대부분의 모듈들이 Promise를 지원하고, 특히 bluebird를 지원한다는 것이다.

얼마전에 Async framework에 대해서 Async,bluebird, Q등을 고려했는데, 지금까지 인사이트로 봐서는 bluebird를 표준 프레임웍으로 해서 개발하는게 답이 아닐까 한다.


 

// redis example

var Redis = require('ioredis');

var redis = new Redis(6379,'127.0.0.1');

var JSON = require('JSON');

 

app.use(function(req,res,next){

      req.redis = redis;

      next();

});

app.post('/profile',function(req,res,next){

      req.accepts('application/json');

     

      var key = req.body.name;

      var value = JSON.stringify(req.body);

     

      req.redis.set(key,value,function(err,data){

           if(err){

                 console.log(err);

                 res.send("error "+err);

                 return;

           }

           req.redis.expire(key,10);

           res.json(value);

           //console.log(value);

      });

});

app.get('/profile/:name',function(req,res,next){

      var key = req.params.name;

     

      req.redis.get(key,function(err,data){

           if(err){

                 console.log(err);

                 res.send("error "+err);

                 return;

           }

 

           var value = JSON.parse(data);

           res.json(value);

      });

});

 

// catch 404 and forward to error handler

app.use(function(req, res, next) {

  var err = new Error('Not Found');

  err.status = 404;

  next(err);

});