Node.js Redis外部接続



実際の構造はec 2 express<>lightsailです.
mac expressによる外部接続の迅速なテスト

1.コード

// redis.js
const redis = require("redis");
const CONFIG = require("../config/config");

const client = redis.createClient({url: CONFIG.REDIS.URL});
client.on("error", (err) => {
  throw new CustomError(err.message, "500");
});
client.connect();
CONFIG.REDIS.URLの値は次のとおりです.
redis://[:패스워드@]호스트[:포트][/DB번호][?필드=]

// ex
redis://localhost:6379
redis://localhost:8999/2
redis://:secrets@example.com:1234/9?foo=bar&baz=qux
// 나는 다음 형식
redis://:비밀번호@Lightsail_IP주소:포트
redisモジュールの使用方法を探していると、urlではなくホスト、ポートオプション接続がありますが、これはできません.
npm redis公式ドキュメントの表示時にurlを使用する
// 접속 안됨
const client = redis.createClient({host: CONFIG.REDIS.HOST, port: CONFIG.REDIS.PORT});

2.LightsaveのRedis設定

$ sudo vi /etc/redis/redis.conf 
すべてのip接続を許可するので、実際にはアプリケーションサーバipのみを使用することが望ましい
# bind 127.0.0.1 ::1
bind 0.0.0.0 ::1 
protected-mode yes
Lightsavelはredisデフォルトポート(6379)も開きます.

redisパスワードの設定


RedisがあるLightsavelでパスワードを設定します.
$ redis-cli 

redis 127.0.0.1:6379> AUTH "test"
(error) ERR Client sent AUTH, but no password is set # redis 비번 없음

redis 127.0.0.1:6379> CONFIG SET requirepass "사용할_비밀번호"
OK
redis 127.0.0.1:6379> AUTH "사용할_비밀번호"
OK

3.確認


redis-cliへのリモート接続


Macリモート接続の使用
# 비밀번호 없이 접속
$ redis-cli -h 호스트주소 -p 6379
호스트주소:6379> keys *
(error) NOAUTH Authentication required.

# 비밀번호 사용
$ redis-cli -h 호스트주소 -p 6379 -a "비밀번호"
호스트주소:6379> keys *
(empty array)

Postman+expressによるリモート接続の検証


urlにパスワードがない場合
redis://@Lightsail_IP주소:6379

urlにパスワードがある場合は、通常の動作
redis://:비밀번호@Lightsail_IP주소:6379

Redisにも良好なデータ挿入削除機能があることを確認する

4.参考


https://www.npmjs.com/package/redis
https://zetawiki.com/wiki/Redis_URI
https://xn--lg3bu39b.xn--mk1bu44c/96