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
- 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 が混じってるけど気にしない。
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 が出来るようにしてあるので、
http://192.168.123.223:3000/session-delete/ にアクセスしてみる。
↓こうなるので、またマシン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入門
- Node.js + Express 4.xで、セッション管理にRedisを使う
- ExpressのSessionデータをRedisで管理する
- 【入門】Redis
- redis-cli コマンド操作まとめ
- Redisのインストール・セットアップ
- Redisの説明
- RedisとElastiCacheを分かりやすくまとめてみた
- システム開発で得たRedis利用ノウハウ
- ttps://future-architect.github.io/articles/20190821/
- RedisサーバのCPU負荷対策パターン
- Commands Introduction
- ttps://future-architect.github.io/articles/20190821/
Author And Source
この問題について(Node.js + Express サーバから、Docker(+Docker-Compose) + Redis サーバーにデータを送る・削除する), 我々は、より多くの情報をここで見つけました https://qiita.com/bonkoturyu/items/fea07701431ec81a30bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .