Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9054

Node.js + Express サーバから、Docker(+Docker-Compose) + Redis サーバーにデータを送る・削除する

$
0
0

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
varexpress=require('express');varapp=express();varsession=require('express-session');varRedisStore=require('connect-redis')(session);constREDIS_HOST_NAME='192.168.123.223';constREDIS_PORT_NO=6379;varredis=require('redis');letredisClient=redis.createClient(REDIS_PORT_NO,REDIS_HOST_NAME);app.use(session({secret:'secret',resave:false,saveUninitialized:true,store:newRedisStore({client:redisClient}),// Redisの設定cookie:{path:'/',maxAge:5*1000,}}));app.get('/',(req,res)=>{// セッションデータが無ければランダム値を取得varbegginer=req.session.value||Math.random();// valueという名前でセッションデータを生成req.session.value=begginer;res.send('Begginer value: '+begginer);});app.get('/session-delete',function(req,res){deletereq.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/を起動すると、
数字は同じにはならないが、↓こんな感じになる
image.png

この状態のままで、マシン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 が出来るようにしてあるので、
http://192.168.123.223:3000/session-delete/にアクセスしてみる。
↓こうなるので、またマシンBを確認する。
image.png

$ 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が削除されているのが確認できる。

参考


Viewing all articles
Browse latest Browse all 9054

Latest Images

Trending Articles