本文介绍使用 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)
获取连接信息
1. 登录 分布式缓存数据库控制台。
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);// 设置带过期时间的 Keyawait 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:// 协议启用 SSLpassword: '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 配置正确。确认网络环境稳定,安全组规则未变更。