- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
-
常见问题
- 实例类型/版本
- 实例特性
- 安全性
-
客户端和网络连接
- DCS实例支持公网访问吗?
- Redis连接失败问题排查和解决
- DCS实例是否支持跨VPC访问?
- Redis公网访问所需弹性IP是否收费?
- Redis连接时报错:“(error) NOAUTH Authentication required”。
- 客户Http的Server端关闭导致Redis访问失败
- 客户端出现概率性超时错误
- 使用Jedis连接池报错如何处理?
- 如何使用Redis-desktop-manager访问Redis实例?
- 使用SpringCloud时出现ERR Unsupported CONFIG subcommand怎么办?
- 客户端无法使用域名连接DCS缓存实例时如何处理?
- 本地环境是否可以连接缓存实例?
- 使用Redis实例的发布订阅(pubsub)有哪些注意事项?
- Redis 3.0实例公网开关被关闭是什么原因?
- 使用短连接访问Redis出现“Cannot assign requested address”错误
- 连接池选择及Jedis连接池参数配置建议
- 如何解决Lettuce 6.x版本客户端使用DCS实例兼容性问题?
- 应该选择域名还是IP地址连接Redis实例?
- 主备实例的只读地址是连接到主节点还是备节点?
-
Redis使用
- 是否支持CPU架构的变更?
- 实例是否支持变更可用区
- Redis实例能否修改VPC和子网?
- 实例是否支持自定义或修改端口?
- 实例是否支持修改访问地址?
- 实例无法删除是什么原因?
- 集群实例启动时间过长是什么原因?
- 使用redis_exporter出错怎么办?
- 什么是预留内存,如何配置预留内存?
- 创建的缓存实例为什么可使用内存比实例规格少一些?
- Redis 3.0 Proxy集群不支持redisson分布式锁的原因
- DCS Redis有没有后台管理软件?
- DCS缓存实例的数据被删除后,能否找回?
- 为什么实例实际可用内存比申请规格小而且已使用内存不为0?
- 如何查看Redis内存占用量
- Cluster集群实例容量和性能未达到瓶颈,但某个分片容量或性能已过载是什么原因?
- 访问Redis报OOM错误提示
- 不同编程语言如何使用Cluster集群客户端
- 使用Cluster的Redis集群时建议配置合理的超时时间
- 读取redis数据报超时错误
- hashtag的原理、规则及用法示例
- Redis key丢失是什么原因
- 重启实例后缓存数据会保留吗?
- 如何确认实例是单DB还是多DB
- Proxy集群开启多DB的使用限制及操作方式
- 如何创建多DB的Proxy集群实例?
- 扩容缩容与实例升级
-
数据备份/导出/迁移
- DCS实例是否兼容低版本Redis迁移到高版本
- 不同类型的操作系统间进行数据传递和操作,需要注意什么?
- 源Redis使用了多DB,能否迁移数据到集群实例?
- 源Redis迁移到集群实例中有哪些限制和注意事项?
- 在线迁移需要注意哪些?
- 在线迁移能否做到完全不中断业务?
- 在线迁移实例源端报“Disconnecting timedout slave”和“overcoming of output buffer limits”
- 如何导出Redis实例数据?
- 使用Rump工具迁移数据,命令执行后无报错,但Redis容量无变化
- 是否支持控制台导出RDB格式的Redis备份文件?
- 缓存实例备份文件如何存放?备份文件的数量是否有限制?
- Redis在线数据迁移是迁移整个实例数据么?
- AOF文件在什么情况下会被重写
- Redis迁移失败有哪些常见原因?
- 一个数据迁移能迁移到多个目标实例么?
- 怎么放通SYNC和PSYNC命令?
- 迁移或导入备份数据时,相同的Key会被覆盖吗?
- Cluster集群实例使用内置key且跨slot的Lua脚本时迁移失败
- 迁移故障处理
- 数据迁移失败问题排查
- Memcached如何迁移?
- 是否支持Memcached和Redis之间实例数据的迁移?
- 大Key/热Key分析/过期Key扫描
- Redis命令
- 监控告警
- 主备倒换
- 创建实例和权限
- Memcached使用
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
Redis主备实例
本章节主要介绍Redis缓存类型的主备实例。
不支持Redis版本的升级,例如,不支持Redis 4.0主备升级为Redis 5.0主备实例。如果需要使用高版本Redis主备实例,建议重新创建高版本Redis主备实例,然后将原有Redis实例的数据迁移到高版本实例上。
主备实例特点
DCS的主备实例在单机实例基础上,增强服务高可用以及数据高可靠性。
主备实例具有以下特性:
- 持久化,确保数据高可靠
实例包含一个主节点和一个备节点,都默认开启数据持久化。
Redis 3.0主备实例的备节点对用户不可见,不支持客户端直接读写数据。
Redis 4.0及以上版本的基础版主备实例的备节点对用户可见,用户可以通过只读地址连接到备节点上读取数据。
- 数据同步
主备节点通过增量数据同步的方式保持缓存数据一致。
说明:
当网络发生异常或有节点故障时,主备实例会在故障恢复后进行一次全量同步,保持数据一致性。
- 故障后自动切换主节点,服务高可用
当主节点故障后,连接会有秒级中断、不可用,备节点在15秒到30秒内自动完成主备切换,切换完成后恢复正常访问,无需用户操作,保证业务平稳运行。
说明:
- 故障切换期间,会有连接中断和不可用等情况,需要业务侧客户端具备重连/重试机制。
- 主备切换完成后,原主节点(已切换为从节点)因故障不会立刻恢复,业务继续访问原主节点会失败,可通过配置Redis SDK解决此类情况,具体请参见使用客户端连接Redis。
- 多种容灾策略
跨AZ部署(可用区):DCS支持将主备实例的主备副本部署在不同的AZ内,节点间电力与网络均物理隔离。您可以将应用程序也进行跨AZ部署,从而达到数据与应用全部高可用。
- 读写分离
Redis 4.0及以上版本的基础版主备实例支持客户端读写分离,分别提供可读写的连接地址(主节点)和只读地址(备节点),客户端连接时,可分别选择主节点或备节点。
主备实例实现客户端读写分离,需要在客户端做配置。如需使用读写分离功能,推荐使用读写分离实例。
Redis 3.0主备实例架构设计
DCS的Redis 3.0主备实例架构,如图1所示。
示意图说明:
- VPC
虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。
- 客户应用
运行在ECS上的客户应用程序,即Redis的客户端。
Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。
- DCS缓存实例
DCS实例。主备实例包含了Master和Replica两个节点。默认开启数据持久化功能,同时保持节点间数据同步。
DCS实时探测实例可用性,当主节点故障后,备节点升级为主节点,恢复业务。
Redis的访问端口默认为6379。
Redis 4.0/5.0/6.0/7.0基础版主备实例架构设计
Redis 4.0/5.0/6.0/7.0基础版主备实例的架构设计,如下图所示。
![点击放大](https://support.huaweicloud.com/productdesc-dcs/zh-cn_image_0000001149467235.png)
图说明如下:
- Redis 4.0/5.0/6.0/7.0基础版主备实例,分别提供可读写的域名连接地址(用于连接主节点)和只读地址(用于连接备节点)。
- Redis 4.0/5.0/6.0/7.0基础版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。
Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。
- 只读节点和读写节点规格一致,用户创建主备实例时,默认包含一个主节点和一个备节点。
说明:
- Redis 4.0及以上版本的基础版实例支持定义端口,如果不自定义端口,则使用默认端口6379。图中以默认端口6379为例,如果已自定义端口,请根据实际情况替换。
- Redis 4.0及以上版本的基础版主备实例在只读域名不带负载均衡,对于可靠性和时延敏感的应用场景,建议使用集群或读写分离类型的实例。
- Redis 4.0及以上版本的基础版主备实例的只读域名在从节点发生故障场景下会出现请求失败的情况,对于可靠性和时延敏感的应用场景,建议使用读写分离类型的实例。
Redis 6.0企业版主备实例架构设计
Redis 6.0企业版主备实例架构设计如图3所示。
- VPC
虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。
- 客户应用
运行在ECS上的客户应用程序,即Redis的客户端。
Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考使用客户端连接Redis。
- DCS缓存实例
DCS实例。主备实例包含了Master和Replica两个节点。
Redis 6.0企业版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。
Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。
Redis的访问端口默认为6379。