分布式缓存Redis

扩容与类型变更

2024-05-22 09:13:23

Redis实例是否支持扩容?

Redis管理控制台支持变更实例的容量,通过该操作可调整实例的规格,以满足不同的容量需求。具体操作请参考实例生命周期管理-扩容

实例扩容时对业务是否会造成影响?

实例执行切换时会出现1~230秒内的连接闪断。

为保障扩容后的新实例能快速追平原实例的增量数据,同时规避因DNS缓存引起的数据双写,在扩容过程中,实例每个分片节点会出现1分钟内的只读状态。

扩容完成后,源实例的实例ID、连接地址、数据、白名单配置以及已创建的账号密码配置等均不会改变。

Redis实例是否支持缩容?

目前暂不支持实例缩容。

Redis实例是否类型变更?

Redis管理控制台支持变更实例的类型,通过该操作可将实例单副本变更为双副本,以满足更高的可靠性、稳定性需求。具体操作请参考实例生命周期管理-类型变更

支持哪些实例类型变更?变更操作会有什么影响?

实例版本

支持的实例变更类型

变更须知及影响

Redis 2.8/4.0/5.0

单机实例变更为主备实例

连接会有秒级中断,大约1分钟左右的只读。

Redis 2.8/4.0/5.0

集群单机实例变更为集群主备实例

每个分片节点连接会有秒级中断,大约1分钟左右的只读。

Redis 6.0/7.0

单机实例变更为主备实例

连接无影响,业务无感知。

Redis 6.0/7.0

cluster单机实例变更为cluster主备实例

连接无影响,业务无感知;建议业务方后续将新增的从节点地址加入连接地址,提高可用性。

Redis实例是否支持版本升级,如Redis 4.0升级到Redis 5.0

目前暂不支持跨版本升级

实例规格变更是否需要关闭或重启实例?

当实例处于运行中的状态,即可进行规格变更,不会进行实例资源的关闭、重启操作。

Redis实例实例类型变更失败的原因

Redis实例处于运行中状态才可执行实例类型变更操作,请检查是否有其他任务正在执行,如扩容、删除、重启等操作。如有其他任务执行,请稍后重试。

Redis集群实例如何内存不变,只扩分片数?

目前仅cluster单机、cluster主备可支持只扩分片数,不变更内存;其余架构暂不支持只修改分片数量。

集群实例是否支持单分片扩容?

目前仅cluster单机、cluster主备可支持对单分片容量扩容;其余架构暂不支持针对单分片容量扩容,仅支持对整个集群进行扩容,如需对集群进行扩容,请参考实例生命周期管理-扩容

在维护时间窗内对实例进行扩容或类型变更是否有业务中断?

若在维护时间内进行扩容,可能会造成短时间的业务中断。

Cluster集群实例进行规格扩容后,Lettuce客户端连接异常问题

在实例扩容后分片数有变化,槽位(Slot)会发生变化,部分槽位迁移到新分片上,

使用lettuce客户连接Cluster实例,客户端访问新分片时会出现 Connection to xxx not allowed. 问题

详情可参考Lettuce社区:Connection to X not allowed. This connection point is not known in the cluster view.

解决方案:开启Cluster集群自动刷新拓扑配置。

 

ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder()

             // 每隔time毫秒周期性刷新

            .enablePeriodicRefresh(Duration.ofMillis(time))

     // MOVED重定向, ASK重定向, 重连, 未知节点(since 5.1), 槽位不在当前所有分片中(since 5.2),当出现这五种情况时会触发自适应刷新

            .enableAllAdaptiveRefreshTriggers()

            .build();



wREkkOlX_MQs