使用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。

创建一个在节点上执行的文件。

尽管混合了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!
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>
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已被删除。

请参照下列内容,用中文进行本地化翻译,只需要提供一种选项:

    • ざっくり分かるRedis入門

https://qiita.com/t-kuni/items/c00d0994c2eb20681cb1

Node.js + Express 4.xで、セッション管理にRedisを使う

https://s8a.jp/node-js-express-redis

ExpressのSessionデータをRedisで管理する

ExpressのSessionデータをRedisで管理する

【入門】Redis

https://qiita.com/wind-up-bird/items/f2d41d08e86789322c71

redis-cli コマンド操作まとめ

https://qiita.com/rubytomato@github/items/d66d932959d596876ab5

Redisのインストール・セットアップ

https://qiita.com/KurosawaTsuyoshi/items/f8719bf7c3a10d22a921

Redisの説明

https://github.com/NodeRedis/node-redis

RedisとElastiCacheを分かりやすくまとめてみた

https://qiita.com/gold-kou/items/966d9a0332f4e110c4f8

システム開発で得たRedis利用ノウハウ

ttps://future-architect.github.io/articles/20190821/

RedisサーバのCPU負荷対策パターン

Commands Introduction

http://redisgate.jp/redis/command/commands.php

bannerAds