tencent cloud

Tencent Cloud Distributed Cache (Redis OSS-Compatible)

Node.js接続例

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-20 17:45:34
AI翻訳
このドキュメントでは、Node.jsクライアントを使用してTencent Cloud Distributed Cacheインスタンスに接続する例を紹介します。

事前準備

環境要件

Node.js 14以降のバージョン。
npmまたはyarnパッケージマネージャー。

クライアントのインストール

npmを使用してnode-redisクライアントをインストールします(4.x以降のバージョンを推奨):
npm install redis

Running Environment

Operating System: Ubuntu 24.04.3 LTS / x86_64

Runtime Version: GNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)

またはioredisクライアントを使用します:
npm install ioredis

Running Environment

Operating System: Ubuntu 24.04.3 LTS / x86_64

Runtime Version: GNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)

接続情報の取得

1. Distributed Cacheコンソールにログインします。
2. インスタンスリストで、対象インスタンスIDをクリックし、インスタンス詳細ページに移動します。
3. ネットワーク情報エリアで、インスタンスのVIPアドレスとポート(デフォルトは6379)を取得します。
4. 構成情報エリアで、インスタンスの接続パスワードを取得します。
デフォルトアカウントはインスタンスID:パスワード形式を使用し、カスタムアカウントはユーザー名@パスワード形式を使用します。パスワード不要の認証インスタンスはパスワードが不要です。

接続例

プロキシモードでは、クライアントはProxyプロキシレイヤーが提供する統一VIPアドレスを介してインスタンスに接続し、Proxyはリクエストルーティングとフェイルオーバーを自動的に処理し、クライアントはバックエンドのトポロジー変更を意識する必要がありません。

node-redis基本接続例

const { createClient } = require('redis');

async function main() {
// クライアント接続を作成します。
const client = createClient({
url: 'redis://192.xx.xx.2:6379', // インスタンスVIPアドレス
password: 'crs-xxxx:パスワード', // デフォルトアカウントのパスワード形式:インスタンスID:パスワード
socket: {
connectTimeout: 2000, // 接続タイムアウト(ミリ秒)
reconnectStrategy: (retries) => {
if (retries > 10) return new Error('Max retries reached');
return Math.min(retries * 200, 3000); // 再接続バックオフポリシー
}
}
});

// エラー処理
client.on('error', (err) => console.error('Redis Client Error:', err));
client.on('connect', () => console.log('Redis connected'));
client.on('reconnecting', () => console.log('Redis reconnecting...'));

// 接続を確立します。
await client.connect();

// データを書き込みます。
await client.set('name', 'Distributed Cache');

// データを読み取ります。
const value = await client.get('name');
console.log('get name:', value);

// 有効期限付きのKeyを設定します(EXの単位は秒)
await client.set('session:user123', 'session_data', { EX: 3600 });

// ハッシュ操作
await client.hSet('user:1001', { name: '張三', age: '28' });
const userInfo = await client.hGetAll('user:1001');
console.log('user info:', userInfo);

// リスト操作
await client.lPush('queue:tasks', ['task1', 'task2', 'task3']);
const task = await client.rPop('queue:tasks');
console.log('dequeued task:', task);

// 接続を閉じます。
await client.quit();
}

main().catch(console.error);

node-redisカスタムアカウント接続例

const { createClient } = require('redis');

async function main() {
const client = createClient({
url: 'redis://192.xx.xx.2:6379',
password: 'myuser@MyPassword', // プロキシモードのカスタムアカウント:ユーザー名@パスワード全体をパスワードとして渡します。
socket: {
connectTimeout: 2000
}
});

client.on('error', (err) => console.error('Redis Client Error:', err));
await client.connect();

await client.set('key', 'value');
console.log(await client.get('key'));

await client.quit();
}

main().catch(console.error);

ioredis接続例

const Redis = require('ioredis');

// 接続を作成します(ioredisには接続プールと自動再接続の仕組みが組み込まれています)。
const redis = new Redis({
host: '192.xx.xx.2', // インスタンスのVIPアドレス
port: 6379, // インスタンスポート
password: 'crs-xxxx:パスワード', // デフォルトアカウントのパスワード形式:インスタンスID:パスワード
db: 0, // データベース番号
connectTimeout: 2000, // 接続タイムアウト(ミリ秒)
commandTimeout: 2000, // コマンドタイムアウト(ミリ秒)
retryStrategy: (times) => {
if (times > 10) return null; // 再試行回数を超えたため、再接続を停止します。
return Math.min(times * 200, 3000);
},
maxRetriesPerRequest: 3, // リクエストごとの最大再試行回数
enableReadyCheck: true, // 接続準備完了チェック
lazyConnect: false // すぐに接続を確立します。
});

redis.on('connect', () => console.log('Redis connected'));
redis.on('error', (err) => console.error('Redis error:', err));

async function main() {
// データを書き込みます。
await redis.set('name', 'Distributed Cache');

// データを読み取ります。
const value = await redis.get('name');
console.log('get name:', value);

// 有効期限付きの Key を設定します。
await redis.setex('session:user123', 3600, 'session_data');

// Pipeline バッチ操作
const pipeline = redis.pipeline();
pipeline.set('key1', 'value1');
pipeline.set('key2', 'value2');
pipeline.set('key3', 'value3');
pipeline.get('key1');
pipeline.get('key2');
pipeline.get('key3');
const results = await pipeline.exec();
console.log('pipeline results:', results);

// 接続を閉じます。
redis.disconnect();
}

main().catch(console.error);

SSL暗号化接続例

const { createClient } = require('redis');
const fs = require('fs');

async function main() {
const client = createClient({
url: 'rediss://192.xx.xx.2:6379', // rediss:// プロトコルを使用してSSLを有効にします。
password: 'crs-xxxx:パスワード',
socket: {
connectTimeout: 2000,
tls: true,
ca: fs.readFileSync('/path/to/ca.pem'), // CA証明書
rejectUnauthorized: true
}
});

client.on('error', (err) => console.error('Redis Client Error:', err));
await client.connect();

await client.set('ssl_test', 'encrypted_connection');
console.log(await client.get('ssl_test'));

await client.quit();
}

main().catch(console.error);

接続パラメータの説明

node-redis パラメータ

パラメータ
説明
推奨値
url
接続アドレス、形式:redis://host:port
-
password
認証パスワード
デフォルトアカウント形式:インスタンスID:パスワード
socket.connectTimeout
接続タイムアウト(ミリ秒)
2000
socket.reconnectStrategy
再接続バックオフ戦略
指数バックオフ、上限3000ms
maxCommandRedirections
最大リダイレクト回数(Clusterモード)
3

ioredis パラメータ

パラメータ
説明
推奨値
host
インスタンス接続アドレス
-
port
インスタンスポート番号
6379
password
認証パスワード
デフォルトアカウント形式:インスタンスID:パスワード
connectTimeout
接続タイムアウト(ミリ秒)
2000
commandTimeout
コマンドタイムアウト(ミリ秒)
2000
maxRetriesPerRequest
リクエストごとの最大再試行回数
3
maxRedirections
最大リダイレクト回数(Clusterモード)
3

よくあるご質問

接続タイムアウト

クライアントが存在するCVMと分散キャッシュデータベースインスタンスが同一VPC内にあることを確認してください。
セキュリティグループルールで該当ポートが開放されていることを確認してください。
接続アドレスとポートが正しいことを確認してください。

接続切断後の自動再接続が行われない

reconnectStrategy の設定が正しいことを確認してください。
ネットワーク環境が安定しており、セキュリティグループルールが変更されていないことを確認してください。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック