Node.js + Express 서버에서 Docker (+Docker-Compose) + Redis 서버로 데이터 보내기/삭제

Node.js 서버에서 Docker 서버로 데이터 보내기


  • Ubuntu 서버 환경은 2개 사용하고 있습니다
  • 기계 A
  • Node.js + Express + express-session + connect-redis + Redis

  • 머신 B
  • Docker + Docker-Compose + Redis



  • 머신 A 에서 머신 B 를 참조하여 데이터를 표시하고 싶었기 때문에, 이런 구성이 되어 있습니다.
    여러 사이트를 보았지만 실제로 해 보지 않으면 이거 모르겠다고 생각했다.

    기계 A 아래 준비



    다양한 설치



    Ubuntu와 Node.js는 이미 도입되었다고 가정합니다.

    필요한 것을 설치


    $ mkdir exp_redis_test
    $ cd exp_redis_test
    $ npm install --save express \
                         express-session \
                         connect-redis \
                         redis
    

    기계 B 아래 준비



    지난번 만들었으므로 사용

    머신 B의 Redis 시작


    docker-compose up -d --build
    

    머신 A로 index.js 만들기



    node로 실행할 파일 만들기



    var와 const와 let이 섞여 있지만 신경 쓰지 않습니다.

    index.js
    var express = require('express');
    var app = express();
    var session = require('express-session');
    var RedisStore = require('connect-redis')(session);
    
    const REDIS_HOST_NAME = '192.168.123.223';
    const REDIS_PORT_NO = 6379;
    var redis = require('redis');
    let redisClient = redis.createClient(REDIS_PORT_NO, REDIS_HOST_NAME);
    
    app.use(session({
        secret: 'secret',
        resave: false,
        saveUninitialized: true,
        store: new RedisStore({ client: redisClient }), // Redisの設定
        cookie: {
          path: '/',
          maxAge: 5 * 1000,
        }
    }));
    
    app.get('/', (req, res) => {
        // セッションデータが無ければランダム値を取得
        var begginer = req.session.value || Math.random();
        // valueという名前でセッションデータを生成
        req.session.value = begginer;
        res.send('Begginer value: ' + begginer);
    });
    
    app.get('/session-delete', function(req, res) {
      delete req.session.value;
      res.send('session variable deleted');
    });
    
    app.listen(3000, () => {
        console.log('Example app listening on port 3000!');
    });
    

    만들면 저장하고 시작합니다.


    $ node index.js
    Example app listening on port 3000!
    

    브라우저에서 http://192.168.123.223:3000/을 시작하면,
    숫자는 같지는 않지만 ↓ 이런 느낌이 든다.


    이 상태로 머신 B를 확인합니다.
    $ docker exec -it mysqltest_redis_1 bash
    root@09a7f47d4784:/data# redis-cli
    127.0.0.1:6379> keys *
    1) "sess:VKmVo2FPTXAlspqLyLHgENmEdHhzK_pS"
    

    데이터가 입력되어 있는 것을 확인할 수 있다. 내용을 보면,
    $ docker exec -it mysqltest_redis_1 bash
    root@09a7f47d4784:/data# redis-cli
    127.0.0.1:6379> keys *
    1) "sess:VKmVo2FPTXAlspqLyLHgENmEdHhzK_pS"
    127.0.0.1:6379> get sess:VKmVo2FPTXAlspqLyLHgENmEdHhzK_pS
    "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"value\":0.016689389693930634}"
    127.0.0.1:6379>
    

    이런 식으로 Value가 입력되어 있는 것을 확인할 수 있다.
    index.js를 다시 확인하면 session-delete를 할 수 있기 때문에,
    h tp://192.168.123.223:3000/세시온-으로 에 접속해 본다.
    ↓ 이렇게 되므로, 또 머신 B를 확인한다.

    $ docker exec -it mysqltest_redis_1 bash
    root@09a7f47d4784:/data# redis-cli
    127.0.0.1:6379> keys *
    1) "sess:VKmVo2FPTXAlspqLyLHgENmEdHhzK_pS"
    127.0.0.1:6379> get sess:VKmVo2FPTXAlspqLyLHgENmEdHhzK_pS
    "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"}}"
    127.0.0.1:6379>
    

    Value가 삭제되어 있는 것을 확인할 수 있다.

    참고


  • 자꾸 알 수 있는 Redis 입문
  • htps : // m / t-ku / ms / c00d0994c2에 b20681cb1

  • Node.js + Express 4.x에서 세션 관리에 Redis 사용
  • htps : // s8 아. jp / 그래서 - js - xp rs - rs

  • Express의 Session 데이터를 Redis로 관리
  • htp://ぢm5. 네 t/ 때문에 js/우신 g-에 xp 렛 s-세시 온-레 ぢ s. HTML

  • 【입문】Redis
  • htps : // 코 m / 흠 d 우 훅 rd / ms / f2d41d08 86789322c71

  • redis-cli 명령 조작 요약
  • htps : // 이 m / 루 바이 토마토 @ b / ms / d66d932959d596876 b5

  • Redis 설치 설정
  • htps : // 코 m / 쿠로 사와 츠요시 / ms / f8719bf7c3 A10d22 A921

  • Redis 설명
  • htps : // 기주 b. 코 m / 뻔뻔 s / 그래서 ぢ s

  • Redis와 ElastiCache를 알기 쉽게 정리해 보았다
  • h tps:// 퀵했다. 작은 m / LD-후 / MS / 966d9 아 0332f4 그림 110C4f8

  • 시스템 개발에서 얻은 Redis 이용 노하우
  • ttps://future-architect.github.io/articles/20190821/

  • Redis 서버의 CPU 부하 대책 패턴
  • htps : // bg. 유 k. 이오 / 엔트리 / 레아 s-c 푸 아 d

  • Commands Introduction
  • ぢ tp : // / ぢ s가. jp / ree s / こまん d / こまん ds. php

  • 좋은 웹페이지 즐겨찾기