Node.js + Express 서버에서 Docker (+Docker-Compose) + Redis 서버로 데이터 보내기/삭제
Node.js 서버에서 Docker 서버로 데이터 보내기
머신 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가 삭제되어 있는 것을 확인할 수 있다.
참고
Reference
이 문제에 관하여(Node.js + Express 서버에서 Docker (+Docker-Compose) + Redis 서버로 데이터 보내기/삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/bonkoturyu/items/fea07701431ec81a30bc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)