连接与网络

最近更新时间:2026-08-14 15:52:31
我的收藏

问题索引

如何连接分布式缓存数据库实例?

分布式缓存数据库支持通过客户端工具、数据库管理工具 DMC 以及多语言 SDK 等多种方式连接。
内网连接
通过同一 VPC 内的云服务器(CVM)连接实例,延迟通常低于 1ms。连接方式:
redis-cli -h <实例内网地址> -p <端口> -a <密码>
外网连接
若需从本地或非腾讯云环境访问实例,可在控制台开启外网访问地址。出于安全考虑,外网连接建议配合以下措施:
设置安全组规则,仅允许特定 IP 段访问。
开启 SSL 加密传输,保障数据传输安全。
使用强密码策略,定期更换密码。
可视化工具连接
支持通过 Redis Desktop Manager 等可视化工具管理实例。若需使用,可通过 CVM 作为跳板机对外提供连接地址。
说明:
外网连接会有额外的网络延迟,生产环境建议优先使用内网连接。多语言连接 SDK 示例,请参见 连接数据库实例

CVM 和实例之间可以使用内网连接吗?

可以,但需同时满足以下条件:
云服务器和数据库实例属于同一账号
两者在同一个 VPC 内(保障同一个地域),或同在基础网络内。
CVM 的网络信息可在 CVM 控制台 的实例列表或详情页查看,分布式缓存数据库实例的网络信息可在 Redis 控制台 的实例列表或详情页查看。

CVM 和实例不在同一个 VPC 内,怎么办?

可以通过云联网来连接实例。对于不同 VPC 下(包括同账号/不同账号,同地域/不同地域)的云服务器和数据库,均可通过云联网实现内网连接。

CVM 和实例在不同地域下,可以直接内网访问吗?

不可以。不同地域属于不同的 VPC 网络,不能直接内网访问。建议在两个 VPC 网络之间建立云联网来实现互通。

同一地域下不同可用区,可以使用内网连接吗?

需要看是否在同一私有网络中:
若为同一私有网络的不同可用区,可以内网互通。
若为不同私有网络(如 VPC1 和 VPC2),无法直接内网互通,需通过云联网或更换网络解决。

不同账号下的 CVM 和实例,可以直接内网连接吗?

不可以。不同账号下的资源在不同的 VPC 内,不可以直接内网连接。建议使用云联网实现跨账号 VPC 互通。

外网无法连接实例如何排查?

外网无法连接实例时,请按照以下步骤逐一排查:
1. 确认实例已开启外网访问地址。登录 Redis 控制台,在实例详情页的网络信息中查看外网地址是否已开启。
2. 检查安全组规则是否允许外网 IP 访问。确认安全组的入站规则已放通您的客户端 IP 和实例端口(默认 6379)。
3. 确认客户端所在网络是否能访问公网。可尝试 telnet <外网地址> <端口> 测试网络连通性。
4. 确认连接命令中的密码格式正确。若实例设置了免密访问,则无需 -a 参数;若设置了密码,标准架构格式为 -a <密码>,集群架构多账号模式格式为 -a <账号名>:<密码>

如何检测实例端口连通性?

使用 telnet 命令即可检测端口连通性:
telnet <实例地址> <端口>
若连接成功,说明端口可达;若连接超时或被拒绝,请排查安全组规则和网络配置。

如何保障实例的数据传输安全?

分布式缓存数据库提供多层次的数据安全保障机制:
网络隔离
实例部署在用户 VPC 私有网络中,通过网络隔离确保实例仅对指定 VPC 内的资源可见,外部网络无法直接访问。
访问控制
安全组:支持配置安全组规则,精确控制允许访问实例的 IP 地址和端口范围。
密码认证:支持设置实例密码或免密访问,集群架构支持多账号权限控制。
高危命令禁用:支持在控制台禁用 FLUSHALLKEYS 等高危命令,防止误操作导致数据丢失。
传输加密
支持开启 SSL/TLS 加密连接,对客户端与实例之间的数据传输进行加密,防止传输过程中的数据窃取或篡改。适用于金融、政务等对数据传输安全有严格要求的场景。

客户端连接实例失败如何系统性排查?

客户端无法连接实例时,建议按以下顺序系统性排查:
第一步:确认实例状态
登录控制台,检查实例是否处于运行中状态。若实例状态为隔离中已回收创建中,则无法建立连接。
第二步:检查连接地址和端口
确认连接命令中使用的 IP 地址和端口与实例详情页显示的一致:
内网访问使用内网地址,外网访问使用外网地址。
默认端口为 6379,若修改过端口请使用实际端口。
集群架构请使用 Proxy 地址,而非节点直连地址。
第三步:检查网络连通性
从客户端执行 telnet <实例地址> <端口> 测试端口是否可达。
若 telnet 不通,检查安全组入站规则是否放通了客户端 IP 和实例端口。
确认客户端与实例在同一 VPC 内(或已通过云联网打通)。
第四步:检查认证信息
确认密码格式是否正确。集群架构多账号模式下格式为 <账号名>:<密码>
若实例开启了免密访问,连接命令中无需 -a 参数。
确认账号未被禁用或删除。
第五步:检查连接数上限
通过控制台查看实例当前连接数,确认是否已达上限。
若连接数已满,检查是否存在连接泄漏,或扩容连接数上限。
第六步:检查客户端配置
确认客户端 SDK 版本与 Redis 引擎版本兼容。
检查客户端是否配置了连接超时和重试机制。
确认 DNS 解析正常(若使用域名连接)。
更多信息,请参见 连接异常。常见错误码及处理:
错误信息
可能原因
处理方式
Connection refused
端口未开放或实例异常
检查实例状态和安全组规则
Connection timed out
网络不通
检查 VPC/安全组/云联网配置
NOAUTH Authentication required
未提供密码
检查 -a 参数是否正确
ERR invalid password
密码错误
重置密码或检查账号格式
ERR max number of clients reached
连接数超限
释放空闲连接或扩容

客户端连接池该怎么配置?

合理配置连接池是保障连接稳定性和性能的关键。以下是常见客户端连接池的推荐参数:
Jedis 连接池配置示例
JedisPoolConfig config = new JedisPoolConfig();
// 最大连接数:根据业务并发量设置,建议不超过实例连接数上限的 80%
config.setMaxTotal(200);
// 最大空闲连接数:建议与 MaxTotal 保持一致
config.setMaxIdle(200);
// 最小空闲连接数:保证一定预热连接,避免冷启动延迟
config.setMinIdle(10);
// 连接池耗尽时是否阻塞等待(建议设为 true,避免直接抛异常)
config.setBlockWhenExhausted(true);
// 最大等待时间(毫秒)
config.setMaxWaitMillis(3000);
// 借用连接时检测可用性(轻微性能开销,建议开启)
config.setTestOnBorrow(true);
// 空闲连接检测(建议开启,防止连接被服务端断开后池中残留)
config.setTestWhileIdle(true);
// 空闲连接检测间隔(毫秒)
config.setTimeBetweenEvictionRunsMillis(30000);
Lettuce 连接池配置建议
// Lettuce 默认连接是线程安全的,单连接即可满足多线程并发
// 仅在极高并发场景下需要开启连接池
GenericObjectPoolConfig<StatefulRedisConnection<String, String>> poolConfig =
new GenericObjectPoolConfig<>();
poolConfig.setMaxTotal(50);
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(5);
配置注意事项
不要超过实例连接数上限:集群架构默认连接数上限 = 10000 × 分片数(单分片可上调至最高40000),标准架构根据规格不同连接数上限在10000 - 40000之间。确保客户端总连接数不超过此上限。
避免连接泄漏:务必在 finally 块或 try-with-resources 中归还连接。
连接超时设置:建议连接超时设为2 - 3秒,读取超时根据业务最差响应时间设定(如5秒)。
生产环境开启 SSL:若实例开启了 SSL 加密,连接池配置中需启用 SSL 参数。

如何开启 SSL/TLS 加密连接?

SSL/TLS 加密可对客户端与实例之间的数据传输进行加密,防止中间人攻击和数据窃取。开启方式以及连接示例,请参见 SSL 加密