【IBM Cloud】Redis和Node.js的数据库连接
引入Redis数据库
这里将介绍将在IBM Cloud上创建的Databases for Redis与Node.js连接的方法。
创建实例
使用Node.js进行连接
设置连接目标URL
让我们在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 : '';
证明书的设置
只要用双引号括起来,它包含换行,就没问题。
至少在本地使用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那样编写重连函数…好像是这样的。