김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing
레이블이 Redis인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Redis인 게시물을 표시합니다. 모든 게시물 표시

2017년 10월 12일 목요일

Node.js 에서 Redis Session 사용하기

 SecureKim     오후 3:23     cookie, Node.js, Redis, session     No comments   


Node.js 에서 Redis Session을 사용하는 예제


Node.js 에서 Redis Session을 사용하는 단순한 예제.

Use Redis Session in node.js


var express   = require('express');
var router          = express.Router();
var path   = require('path');
var favicon   = require('serve-favicon');
var cookieParser  = require('cookie-parser');
var bodyParser  = require('body-parser');
var http    = require('http');
var expressSession  = require('express-session');
var fs     = require('fs');
var RedisStore      = require('connect-redis')(expressSession);
var redis           = require('redis');
var app = express();
//http////////////////////////////////
var httpServer=http.createServer(app);
httpServer.listen(80, function(){
 console.log("http server listening on port " + 80);
});
////////////////////////////////
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());

var redisConfig = {
    "host": "localhost",
    "port": 6379,
    "prefix": "session:",
    "db": 0,
    "client": redis.createClient(6379,"localhost")
}
const session = expressSession({
    secret : new Date().getMilliseconds()+"brokim",
    resave : false,
    store  : new RedisStore(redisConfig),
    saveUninitialized:true,
    cookie : {
        maxAge : 1000 * 60 * 3
    }
});
app.use(session);
app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(express.static(path.join(__dirname, 'public')));
app.get('/',function(req,res){
  fs.readFile('./public/login/index.html', function(error, data) {
        if(error != undefined) {
            console.log(error);
            res.writeHead(404);
            res.end();
        } else {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end(data);
        }
    });
});

//////////////////////////////////////////////////////////////////////////////////
/////////////////RESTFUL APIS/////////////////////////////////////////////////////
//LOGIN///////////////////////////////////////////////////////////////////////////

app.route('/login')
    .post(function login_post(req,res){
        try{
        //query는 따로 구현하면 됨.
        //var query = require('./query.js');
        query.login([
            req.body.id
            ,salted(req.body.pw)],
            function loginAPI(ret){
            if(ret.fail==0){
                req.session.privilege=ret.result.privilege;
                req.session.uid=ret.result.id;
                req.session.name=ret.result.name;
            }
            res.send(ret);
        });
        } catch(error){
        }
    });

app.get('/logout', function logout_get(req,res){
    req.session.destroy(function logout_destroy(err){
        if(err!==null){
            RESULT.GENERAL_FAIL.result="";
            res.send(RESULT.GENERAL_FAIL);
        } else {
            RESULT.GENERAL_SUCCESS.result="";
            res.send(RESULT.GENERAL_SUCCESS);
        }
    });
});

module.exports = app;

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2013년 11월 1일 금요일

[Node.js] Redis 의 List 이용하기

 SecureKim     오전 12:16     레디스 리스트 예제, Node.js, Redis, Redis 리스트, Redis List     No comments   

Redis 의 List (lpush, llen, lrange, lrem)

var redis = require('redis');
/*
* (왼쪽에)
* 값을 넣는것은 lpush
* 길이 측정은 llen
* 범위 출력은 lrange
* 특정 값 삭제는 lrem
*
* (오른쪽)은 안해봤는데 아마 앞에 접두어로 r이 붙이면 될 것 같습니다.
*
* 그리고 모든 함수는 콜백을 지원합니다.
* 예 ) client.lrange('list',0,-1,function(err,obj){ ... });
*/
var client=redis.createClient(포트,호스트,null);

client.lpush('list','a');    //키 list에 a가 들어갑니다.
client.lpush('list','b');    //키 list에 b가 들어갑니다.
client.lpush('list','c');    //키 list에 c가 들어갑니다.
client.lpush('list','d');    //키 list에 d가 들어갑니다.

client.lrem('list',1,b);     //키 list에 b가 있다면 하나만 지웁니다.
client.lrange('list',0,-1);  //키 list를 모두 출력합니다. a, c, d 가 나옵니다.
client.lrange('list',1,2);   //키 list의 index기준 1~2를 출력합니다. c, d 가 나옵니다.
client.llen('list');         //키 list의 길이를 출력합니다. 3 이 나옵니다.



Node.js 에서 Redis의 리스트를 사용하는 예제를 찾아봤는데 없더군요.. 그래서 정리해서 올려봅니다.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2013년 7월 4일 목요일

[Node.js] Redis 의 데이터 관리(쿼리,삽입,삭제)

 SecureKim     오후 3:30     자동 json, hdel, hget, hset, json, Node.js 와 Redis, Redis     2 comments   

Redis 의 hset , hget , hdel

var redis = require('redis');
/*
*자동으로 JSON String화 되어 들어가고 나오게 할 방법이 있습니다.
*npm install redis-jsonify 로 다운받으시면 됩니다.
*
*사용법
*var jsonify=require('redis-jsonify');
*var client=jsonify(redis.createClient(포트,호스트,null));
*
*/
var client=redis.createClient(포트,호스트,null);
var tempobj={test: "hi", test2:"ho"}
client.hset('test','a',JSON.stringify(tempobj) ); 
client.hget('test','a',function(err,obj){
 obj=JSON.parse(obj);
 console.log(obj.test);
});
client.hdel("test","a"); 
//test 키 전체가 삭제되는 것이 아니라 test 의 a와 내용만 삭제합니다.

github.com/mranney/node_redis 이곳에서 함수를 찾아보곤 했었는데 이곳에 없는 것들이 많더라구요. hget, hdel이 있다는 사실은 나중에 실험을 통해 알게 되었습니다.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2013년 6월 25일 화요일

[Node.js] Redis 의 hmset

 SecureKim     오후 1:56     객체, 메모리 기반, 몇개만 바꾸기, 비관계형, hmset, memory based, node, Node.js 와 Redis, Redis     2 comments   

Redis 의 hmset 사용하기

var redis = require('redis');
var client=redis.createClient(포트,호스트,null);
/*
*    MySQL을 사용하다가 Redis를 사용해보니 신세계입니다.
*/
var room={
 key1:'value1', 
 key2:'value2'
 };
//JSON 형태로 집어넣음
client.hmset('test', room);

// 'test' 키의 값중 key2는 그대로 두고 key1만 value5로 바꾸는 방법
room={
 key1:'value5'
 };
client.hmset('test', room);
client.hgetall("test",function(err,obj){
        console.log(obj.key1);
        console.log(obj.key2);
});
//value5 와 value2 가 출력됩니다.



자세히 사용방법이 적혀있는 곳이 별로 없었습니다.

그래서 처음엔 room의 value몇개를 바꾸기 위해

get으로 몽땅 값들을 가져와서 몇개만 바꾸고 다시 몽땅 set으로 집어넣었는데

아무리 생각해도 비 효율적이라 요리조리 해봤는데 저렇게 하니까 되더라구요.

그래서 지금은 value 몇개를 바꾸기 위해 전체를 가져올 필요없이

바꿀 것만 hmset으로 집어넣고 있습니다.

메모리 기반 비관계형 데이터베이스... 정말 빠릅니다 속도 차이가 확실히 느껴져요.
Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이전 게시물 홈

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...
  • 태블릿에서 양자내성암호(격자암호) 돌려보기
      Termux에서 양자 내성 암호 돌려보기 많은 시행 착오 끝에 성공 ! 1. Playstore에서 Termux를 설치한다. 2. 양자 내성 암호 라이브러리 빌드를 위한 셋업 pkg update && pkg upgrade -y pkg ...
  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...

Blog Archive

  • ▼  2026 (2)
    • ▼  2월 (2)
      • 태블릿에서 양자내성암호(격자암호) 돌려보기
      • 양자컴퓨터와 보안 위협 (쇼어 알고리즘)
  • ►  2025 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  7월 (1)
  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
전체 댓글
Atom
전체 댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates