一、问题索引
·如何连接分布式缓存数据库实例?
·CVM 和实例之间可以使用内网连接吗?
·CVM 和实例不在同一个 VPC 内,怎么办?
·CVM 和实例在不同地域下,可以直接内网访问吗?
·同一地域下不同可用区,可以使用内网连接吗?
·不同账号下的 CVM 和实例,可以直接内网连接吗?
·外网无法连接实例如何排查?
·如何检测实例端口连通性?
·如何保障实例的数据传输安全?
·客户端连接实例失败如何系统性排查?
·客户端连接池该怎么配置?
·如何开启 SSL/TLS 加密连接?
二、如何连接分布式缓存数据库实例?
分布式缓存数据库支持通过客户端工具、数据库管理工具 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 地址和端口范围。
·密码认证:支持设置实例密码或免密访问,集群架构支持多账号权限控制。
·高危命令禁用:支持在控制台禁用 FLUSHALL、KEYS 等高危命令,防止误操作导致数据丢失。
·传输加密
支持开启 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 加密。