【IBM Cloud】Redis和Node.js的数据库连接

引入Redis数据库

这里将介绍将在IBM Cloud上创建的Databases for Redis与Node.js连接的方法。

创建实例

image.png
image.png

使用Node.js进行连接

image.png

设置连接目标URL

image.png
image.png
image.png

让我们在Node.js中定义一个名为settings_redis_url的变量,并将之前复制的URL设置为环境变量。

REDIS_DATABASE_URL=rediss://ibm_clo~~1a3ba42:a913~~5e13@d9f8~~
const settings_redis_url = 'REDIS_DATABASE_URL' in process.env ? process.env.REDIS_DATABASE_URL : '';

证明书的设置

image.png

只要用双引号括起来,它包含换行,就没问题。
至少在本地使用npm start时,它可以正常运行。

REDIS_CERTIFICATE="MIIDHTCCAgWgAw~~
~~~
~~~
-----END CERTIFICATE-----"

设置环境变量时,请注意将证明书的文本设置为环境变量。

由于本次计划在CodeEngine上部署应用程序,因此我们将稍微修改证书文本字符串。(有关详细信息,请参阅下面的文章。)

 

将换行符替换为\n,并将其设置为环境变量,而不用双引号括起来,将会得到以下形式:

REDIS_CERTIFICATE=MIIDHTCCAgWgAw~~\n~~\n~~\n-----END CERTIFICATE-----

当读入证书文本后,可以使用正则表达式将字符串替换,并将其识别为换行符。

const redis_cert = 'REDIS_CERTIFICATE' in process.env ? process.env.REDIS_CERTIFICATE : '';
redis_cert = redis_cert.replace(/\\n/gm, "\n")

Redis连接代码

如果以上的环境变量被设置好了,就可以使用redis.createClient来创建连接设置,然后使用redisClient.connect()进行连接。

// 環境変数より変数へ代入
const settings_redis_url = 'REDIS_DATABASE_URL' in process.env ? process.env.REDIS_DATABASE_URL : '';
const redis_cert = 'REDIS_CERTIFICATE' in process.env ? process.env.REDIS_CERTIFICATE : '';
redis_cert = redis_cert.replace(/\\n/gm, "\n")

//. Redis
var redis = require( 'redis' );
var redisClient = null;
if( settings_redis_url ){
  // 接続先の設定
  redisClient = redis.createClient( {
    url: settings_redis_url, // 接続先のURL
    legacyMode: false,
    tls: {},
    socket: {
      tls: true,
      rejectUnauthorized: false,
      cert: redis_cert, // 証明書テキスト
    }
  } );
  // 接続
  redisClient.connect();
  console.log( 'redis connected' );

  redisClient.on( 'error', function( err ){
    console.error( 'on error redis', err );
  });
}

顺便提一句,似乎在断开连接时会自动重新连接,所以不需要像PostgreSQL那样编写重连函数…好像是这样的。

广告
将在 10 秒后关闭
bannerAds