帮你快速理解、总结文档立即下载

Node.js 连接示例

最近更新时间:2026-08-14 15:52:31
我的收藏
本文介绍使用 Node.js 客户端连接腾讯云分布式缓存数据库实例的示例。

准备工作

环境要求

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)

获取连接信息

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', '腾讯云分布式缓存数据库');

// 读取数据
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', '腾讯云分布式缓存数据库');

// 读取数据
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 配置正确。
确认网络环境稳定,安全组规则未变更。