华为云用户手册

  • Cluster集群实例容量和性能未达到瓶颈,但某个分片容量或性能已过载是什么原因? 这是由于Cluster集群采用的是分片设计理念,每个具体的Key只能分布到某一个具体的分片节点上,计算Key的分布过程有以下两个步骤: 针对Key值进行CRC16算法计算后对16384取模,得到对应的槽位(Slot)值。 根据S槽位(Slot)和分片的映射关系,找到Key具体应该属于的分片,并且进行存取。 所以,Key并没有均匀分布在实例的各个分片上,是根据计算结果进行存取的。在大Key和热Key存在时,就会出现某个分片容量或性能已过载,但其他分片内存负载还是很低,并没有达到容量和性能的瓶颈。 父主题: Redis使用
  • 遍历所有Key 由于keys命令复杂度高,容易导致Redis无响应,所以禁止使用keys命令遍历实例所有的Key。如果需要在Redis实例中遍历所有的Key,可以使用Redis-cli工具,执行以下命令可以遍历Redis实例的所有key。 ./redis-cli -h {redis_address} -p {port} [-a password] --scan --pattern '*' scan命令的使用方法,可以参考Redis官方网站。
  • 什么是大Key/热Key? 名词 定义 大Key 大Key可以分为两种情况: Key的Value占用存储空间较大。一般单个String类型的Key大小达到10KB,或者集合类型的Key总大小达到50MB,则被定义为大Key。 Key的元素较多。一般集合类型的Key中元素超过5000个,则被定义为大Key。 热Key 通常当一个Key的访问频率或资源占用显著高于其他Key时,则称之为热Key。例如: 某个集群实例一个分片每秒处理10000次请求,其中有3000次都是操作同一个Key。 某个集群实例一个分片的总带宽使用(入带宽+出带宽)为100Mbits/s,其中80Mbits是由于对某个Hash类型的Key执行HGETALL所占用。 父主题: 大Key/热Key分析/过期Key扫描
  • 使用Cluster的Redis集群时建议配置合理的超时时间 客户端配置问题导致无法连接。 当集群实例备节点故障情况下,客户端使用SpringBoot + Lettuce的方式连接Redis,使用的Lettuce客户端在连接集群时,需要与所有节点先建立连接(包括故障节点)。 在未配置timeout超时的情况下,模拟备节点故障时,可能出现分钟级的超时阻塞(Lettuce客户端的老版本默认超时为120s,新版本默认为60s),配置如下图: 可能会导致端到端业务访问时间过长(最长达到默认超时时间),如下图所示: 在客户端侧添加timeout参数后,备节点超时时间大幅度缩短,并且可以根据客户自己的业务诉求进行调整,配置如下: 配置后查看端到端业务访问时间如下图所示: 因此在未配置timeout参数情况下,客户端在建立连接时,故障节点由于未配置timeout超时,在建立连接时会出现连接阻塞的情况。 建议:用户需根据业务能容忍的超时时间进行设置,例如在一次HTTP端到端请求中,需要请求两次Redis,而HTTP请求的最大超时时间为10s,则建议将超时时间配置为5s,防止由于超时时间过长或者未配置超时时间造成故障场景下的业务受损。 父主题: Redis使用
  • D CS 的Memcached过期数据清除策略是什么? DCS的Memcached作为缓存产品是允许用户根据业务需求设置在其中存放数据的过期时间的。例如在执行add操作的时候可以设置expire过期时间。 DCS的Memcached默认策略为不逐出(noeviction)。支持通过修改Memcached实例配置参数(maxmemory-policy)修改实例的数据逐出策略。 Memcached实例支持的数据逐出策略和配置参数的方式,请参考修改DCS实例配置参数。 父主题: Memcached使用
  • 如何分析Redis 3.0实例的热Key? 由于Redis 3.0本身不提供热Key能力,您可以参考以下方法进行分析。 方法1:进行业务结构和业务实现分析,找到可能的热Key。 例如,某商品在秒杀,或者用户登录,对业务代码分析,很容易找到热Key。 优点:简单易行。 缺点:需要对业务代码比较了解,另外对于一些复杂的业务场景,不太容易分析。 方法2:在客户端代码中,调用Redis的函数中,进行访问Key的记录,进而统计出热Key。 缺点:需要代码进行侵入式修改。 方法3:抓包分析。 优点:简单易行。 父主题: 大Key/热Key分析/过期Key扫描
  • 不同编程语言如何使用Cluster集群客户端 当前DCS Cluster集群对比Proxy集群的优势和特性: 表1 Cluster集群与Proxy集群差异 对比项 Cluster集群 Proxy集群 原生兼容性 高 中 客户端兼容性 中(需要客户端开启集群模式) 高 性价比 高 中 时延 低时延 中等时延 读写分离 原生支持(客户端SDK配置) Proxy实现 性能 高 中 Cluster集群由于没有代理层,在时延和性能方面具备一定的优势;但是对于客户端使用方面,由于Cluster集群使用开源的Redis Cluster协议,在客户端的兼容性方面略差于Proxy集群。 推荐的Cluster集群客户端: 表2 Cluster集群客户端 客户端语言 客户端类型 Cluster集群参考文档 Java Jedis https://github.com/xetorthio/jedis#jedis-cluster Java Lettuce https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster PHP php redis https://github.com/phpredis/phpredis#readme Go Go Redis Cluster集群:https://pkg.go.dev/github.com/go-redis/redis/v8#NewClusterClient Proxy集群或单机主备:https://pkg.go.dev/github.com/go-redis/redis/v8#NewClient Python redis-py-cluster https://github.com/Grokzen/redis-py-cluster#usage-example C hiredis-vip https://github.com/vipshop/hiredis-vip?_ga=2.64990636.268662337.1603553558-977760105.1588733325 C++ redis-plus-plus https://github.com/sewenew/redis-plus-plus?_ga=2.64990636.268662337.1603553558-977760105.1588733325#redis-cluster Node.js node-redis io-redis https://github.com/NodeRedis/node-redis https://github.com/luin/ioredis 官方推荐的开源客户端列表:https://redis.io/clients。 父主题: Redis使用
  • DCS支持哪些实例类型变更? 表1 DCS实例类型变更明细 实例版本 支持的实例变更类型 变更须知及影响 Redis 3.0 单机实例变更为主备实例 连接会有秒级中断,大约1分钟左右的只读。 主备实例变更为Proxy集群实例 如果Redis 3.0主备实例数据存储在多DB上,或数据存储在非DB0上,不支持变更为Proxy集群;数据必须是只存储在DB0上的主备实例才支持变更为Proxy集群。 连接会中断,5~30分钟只读。 Memcached 单机实例变更为主备实例 会有秒级业务中断、大约1分钟只读。 Redis 4.0/5.0/6.0 主备实例或读写分离实例变更为Proxy集群实例 变更为proxy集群时,需要评估proxy集群的多DB使用限制和命令使用限制对业务的影响。具体请参考proxy集群使用多DB限制,实例受限使用命令。 变更前实例的已用内存必须小于变更后最大内存的70%,否则将不允许变更。 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。 变更完成后需要对实例重新创建告警规则。 如果原实例是主备实例,请确保应用中没有直接引用只读IP或只读 域名 。 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。 变更规格过程中会有秒级业务中断、大约1分钟只读,建议在业务低峰时进行变更。 Proxy集群实例变更为主备实例或读写分离实例 Redis 4.0/5.0/6.0 主备实例变更为读写分离实例 说明: 读写分离实例暂不支持直接变更为主备实例。 目前只支持主备实例变更为相同容量的读写分离实例,小于4G规格的主备实例不支持变更为读写分离实例。 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。 变更完成后需要对实例重新创建告警规则。 请确保主备实例的应用中没有直接引用只读IP或只读域名。 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。 变更规格过程中会有秒级业务中断,建议在业务低峰时进行变更。 主备实例如果创建了ACL账号,不支持变更为读写分离实例。 Redis 6.0如果开启了SSL链路加密传输,不支持变更为读写分离实例。 实例类型变更后支持的命令,请参考对应的开源命令兼容性。 除了上表中提到的实例外,其他实例类型目前不支持实例类型的变更,若您想实现跨实例类型的规格变更,可参考使用迁移任务在线迁移Redis实例进行操作。 实例类型是否支持变更,以控制台实例的“变更规格”操作界面为准。 图1 支持变更的实例类型 父主题: 扩容缩容与实例升级
  • Redis/Memcached实例变更失败的原因 检查是否有其他任务在执行。 实例变更过程中,同时有其他任务在执行。例如实例正在重启的同时,执行删除或扩容操作,或者实例正在扩容的时候,执行删除操作。 遇到实例变更操作失败,可以稍后尝试,如果仍然存在问题,请提工单联系技术支持。 如果是主备变更为Proxy集群,请确认主备实例DB0以外的DB是否有数据,如果非DB0外的其他DB上有数据(如DB1有数据),会出现变更失败。 数据必须是只存储在DB0上的主备实例才支持变更为Proxy集群。 父主题: 扩容缩容与实例升级
  • Redis迁移失败有哪些常见原因? 在进行数据迁移时,如果Redis实例发生了主备倒换,可能会导致迁移失败。可联系技术支持,将主备倒换关闭,待迁移成功后,再开启主备倒换。 如果是在线迁移,请确认源Redis实例,是否禁用了SYNC和PSYNC命令,如果禁用了,需要先开启,允许数据同步。 如果是单机/主备实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保单机/主备实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保单机/主备实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。 父主题: 数据备份/导出/迁移
  • 为什么实例实际可用内存比申请规格小而且已使用内存不为0? 由于系统开销会占用部分资源,主备实例的持久化也需要一部分资源,所以Redis 3.0和Memcached实例创建后,缓存实例实际可用内存小于申请规格。除了用户存储数据外,Redis-server内部的buffer以及内部数据结构会占用一部分内存。所以缓存实例创建后,实例已使用内存量不为0。其他版本的实例不涉及该问题。 父主题: Redis使用
  • 发生主备倒换的原因有哪些? 主备倒换有以下几种可能的场景: 用户自行从DCS控制台界面发起“主备倒换”操作,切换主实例。 DCS检测到主备实例的主节点存在故障后,触发实例“主备倒换”操作。 例如,使用了keys等消耗资源的命令、日志老化批量删除日志,导致CPU超高,都会触发主备倒换。 用户在DCS界面上执行重启操作,可能触发备节点升主节点,即主备倒换。 Redis实例在扩容过程中,可能会发生主备倒换。 扩容过程中,实例会创建新规格的节点作为备节点,主节点数据全量+增量同步到备节点后进行主备切换并删除原节点,完成扩容。 如果您需要对实例主备倒换进行监控,可以在 云监控服务 中创建事件监控,具体操作请参考创建事件监控的告警通知。创建事件监控告警后,如果发生主备倒换,系统会上报主备倒换事件,收到该事件通知后,请查看客户端业务是否存在异常。如果业务不正常,则需要确认客户端连接是否正常,是否支持在主备倒换后进行客户端重连恢复业务,如果不支持客户端重连,则需要重启客户端。 父主题: 主备倒换
  • 同步数据失败 同步数据失败的处理建议: 错误信息包含“key name is busy”,目标Redis对应的key已经存在,删除目标Redis报错的key。 错误信息包含“not in the same slot“,建议进行业务改造,不要在多key命令里面用跨slot的key;也可以把目标Redis用主备实例代替proxy集群实例。 错误信息中包含“read: connection reset by peer”,源Redis为主备,且迁移过程中,频繁发生主备倒换,请分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移;也可强行关闭主备倒换,等数据迁移完毕后再开启主备倒换,命令:config set slave-priority 0。如果目标Redis为proxy集群,请排查pipeline阈值大小,建议调整proxy节点pipeline阈值为5W,命令: proxy.config set client-max-pipeline 50000。
  • 未知或未支持的命令 未知或未支持的命令的处理建议: 检查源Redis有没有放通相关命令,如SYNC和PSYNC,需要联系客服放通命令。 在线迁移,必须满足源Redis和目标Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提,否则,会迁移失败。 网络 检查源Redis、目标Redis、迁移任务所需虚拟机是否在同一个VPC,如果是同一个VPC,则检查安全组(Redis 3.0实例)或白名单(Redis 4.0/5.0实例)是否放通端口和IP,确保网络是连通的;如果不在同一个VPC,则需要建立VPC对等连接,打通网络。 源Redis和目标Redis必须允许迁移任务底层虚拟机访问。实例安全组或白名单配置,请参考配置安全组、配置白名单。 源Redis和目标Redis属于不同的云厂商,请参考云专线打通网络。 命令 默认情况下,一般云厂商都是禁用了SYNC和PSYNC命令,如果要放通,需要联系云厂商运维人员放通命令。 华为云内部进行迁移: 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令; 华为云DCS服务之间进行迁移,如果是同一账号相同Region进行在线迁移,在执行迁移时,会自动放通SYNC和PSYNC命令; 如果是不同Region或相同Region不同账号进行在线迁移,不会自动放通SYNC和PSYNC命令,无法使用在线迁移。推荐使用备份文件导入方式迁移。 其他云厂商迁移到华为云: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用在线迁移功能,需要联系源端的云厂商运维人员放通此命令,离线迁移,推荐使用备份文件导入方式。
  • 源Redis迁移到集群实例中有哪些限制和注意事项? Proxy版集群实例 使用方式与单机、主备实例类似,但是默认只有1个DB,不支持select命令。数据文件批量导入时,遇到select命令会返回错误提示并忽略,同时继续将剩余数据导入。 举例: 源Redis在数据库编号0和2中有数据,生成的AOF或RDB文件包含了这两个库。 在导入到Proxy集群实例时会忽略“select 2”的命令,然后继续导入源数据库2中的数据到DB0中。 用户需要注意以下: 源Redis中不同数据库包含了相同的key,则导入时,编号靠前的数据库的key的value会被靠后的数据库中的key覆盖。 源Redis使用了多个数据库,数据迁移到DCS集群实例后,都存储在同一数据库中,不支持select命令。业务需要做适配。 Cluster版集群实例 Cluster版集群除了只有1个DB外,导入方式与其他类型的Redis实例也有差异。Cluster集群的数据,必须由客户端分别连接各分片节点,将数据分别导入。各分片节点的IP地址查询命令: redis-cli -h {Redis Cluster IP} -p 6379 -a {password} cluster nodes 返回的节点地址清单中,标记为master的节点IP地址即为Cluster集群的分片节点地址。 父主题: 数据备份/导出/迁移
  • 重新启动数据同步失败 重新启动数据同步失败的处理建议: 分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。 检查目标Redis的规格是否小于迁移数据大小、是否有其他任务在执行。 如果目标Redis的实例规格小于迁移数据大小,迁移过程中,内存被占满,会导致迁移失败。 如果目标Redis存在正在执行的主备倒换,建议联系客服关闭主备倒换后,重新执行数据迁移。待迁移完成后,重新开启主备倒换。 提供错误信息,联系客服。
  • 同步数据失败,源节点:{0},目标节点:{1} 同步数据失败的处理建议: 分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。 确保目标Redis规格不小于源Redis。查看规格步骤参见查看实例信息; 参见Redis连接失败问题排查和解决。 排查源Redis规格和迁移机内存大小,迁移机的内存小,源redis数据量过大,迁移速度过慢使数据堆积在迁移机上时,也会导致该类问题,此情况建议扩容迁移机规格。
  • 执行命令异常 执行命令异常的处理建议: 错误信息中包含“listening-port”和“REPLCONF”相关,请检查源Redis是否放通SYNC和PSYNC命令,迁移任务底层资源与源Redis、目标Redis网络是否连通。 在线迁移,必须满足源Redis和目标Redis的网络相通、源Redis已放通SYNC和PSYNC命令这两个前提,否则,会迁移失败。 网络 检查源Redis、目标Redis、迁移任务所需虚拟机是否在同一个VPC,如果是同一个VPC,则检查安全组(Redis 3.0实例)或白名单(Redis 4.0/5.0实例)是否放通端口和IP,确保网络是连通的;如果不在同一个VPC,则需要建立VPC对等连接,打通网络。 源Redis和目标Redis必须允许迁移任务底层虚拟机访问。实例安全组或白名单配置,请参考配置安全组、配置白名单。 源Redis和目标Redis属于不同的云厂商,请参考云专线打通网络。 命令 默认情况下,一般云厂商都是禁用了SYNC和PSYNC命令,如果要放通,需要联系云厂商运维人员放通命令。 华为云内部进行迁移: 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令; 华为云DCS服务之间进行迁移,如果是同一账号相同Region进行在线迁移,在执行迁移时,会自动放通SYNC和PSYNC命令; 如果是不同Region或相同Region不同账号进行在线迁移,不会自动放通SYNC和PSYNC命令,无法使用在线迁移。推荐使用备份文件导入方式迁移。 其他云厂商迁移到华为云: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用在线迁移功能,需要联系源端的云厂商运维人员放通此命令,离线迁移,推荐使用备份文件导入方式。 错误信息包含“read error”,且为全量迁移过程中失败,数据量过大的情况下,建议开始迁移时不要选择“自动重连”模式,等到进入“增量迁移”后,再选择“自动重连”模式,且调大repl-timeout的时间值;同时建议调整源端output buffer参数,buffer参数的大小需要根据源端内存大小来定,比如源端24G的内存大小,可以调整为2G的buffer,命令: client-output-buffer-limit slave 2gb 2gb 600 。 错误信息中包含“write: connection reset by peer”,可能原因目标Redis内存规格太小导致内存写满,无法同步数据,建议扩大目标Redis实例规格,至少与源端实例规格持平。 错误信息中包含“read: connection reset by peer”,源Redis为主备,且迁移过程中,频繁发生主备倒换,请分析源Redis是否存在大Key,如果源Redis存在大key,建议将大key打散成多个小key后再迁移。也可强行关闭主备倒换,等数据迁移完毕后再开启主备倒换,命令:config set slave-priority 0。如果目标Redis为proxy集群,请排查pipeline阈值大小,建议调整proxy节点pipeline阈值为5W,命令: proxy.config set client-max-pipeline 50000。 提供错误信息,联系客服。
  • 怎么放通SYNC和PSYNC命令? DCS云服务内部的Redis之间进行迁移: 如果迁移任务和源端实例在相同账号下的相同Region,在配置在线迁移任务时,源端实例通过选择DCS实例(云服务Redis)的方式进行配置,会自动放通源端实例的SYNC和PSYNC命令。 如果迁移任务和源端实例在不同账号或不同Region,在配置在线迁移任务时,源端实例不能通过选择DCS实例(云服务Redis)的方式进行配置,不会自动放通源端实例的SYNC和PSYNC命令,因此无法使用控制台的在线迁移。推荐使用备份文件导入方式迁移。 自建Redis迁移至DCS,默认没有禁用SYNC和PSYNC命令。 其他云厂商迁移到DCS云服务: 一般云厂商都是禁用了SYNC和PSYNC命令,如果使用DCS控制台的在线迁移功能,需要联系源端的云厂商运维人员放通此命令。离线迁移,推荐使用备份文件导入方式。 如果不需要增量迁移,可以参考使用Redis-shake工具在线全量迁移其他云厂商Redis进行全量迁移,该方式不依赖于SYNC和PSYNC。 父主题: 数据备份/导出/迁移
  • DCS实例如何缩容? DCS实例支持扩容和缩容明细如下表1。 表1 实例规格变更明细 缓存类型 单机实例 主备实例 Cluster集群实例 Proxy集群实例 读写分离实例 Redis 3.0 支持扩容和缩容 支持扩容和缩容 - 仅支持扩容 - Redis 4.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容和缩容 支持扩容、缩容和副本数变更 Redis 5.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容和缩容 支持扩容、缩容和副本数变更 Redis 6.0 基础版 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容缩容 支持扩容、缩容和副本数变更 Redis 6.0 企业版 - 支持扩容和缩容 - - - Redis 7.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 - - Memcached 支持扩容和缩容 支持扩容和缩容 - - - 实例扩容、缩容操作请参考规格变更。 如果Redis 3.0 Proxy集群需要缩容,可以先进行数据备份,然后另外创建对应规格的Proxy集群实例,使用备份文件导入方式,将备份数据文件导入到新的Proxy集群实例。待数据迁移完成后,再释放原来规格的Proxy集群实例。在线迁移操作,可以参考备份文件导入方式。 父主题: 扩容缩容与实例升级
  • 如何导出Redis实例数据? 除单机实例外,DCS其他类型实例都支持通过管理控制台导出实例数据: 进入DCS管理控制台“缓存管理”页面。 单击需要导出数据的实例名称,进入该实例详情页面。 单击“备份与恢复”,查看该实例的备份记录。 如没有备份记录,执行手动备份后,单击“下载”,根据提示完成数据的下载操作。 如果您的实例创建时间非常早,由于实例版本没有升级而无法兼容备份恢复功能,请联系技术支持将缓存实例升级到最新版本,升级后就可以支持备份恢复功能。 单机实例不支持备份功能,用户可以通过Redis-cli客户端导出rdb文件,但是使用Redis-cli导出rdb文件依赖SYNC命令。 放通了SYNC命令的单机实例(例如Redis 3.0单机实例,未禁用SYNC命令),可以通过执行以下命令,将单机实例上的数据导出: redis-cli -h {source_redis_address} -p 6379 [-a password] --rdb {output.rdb} 禁用了SYNC命令的单机实例(例如Redis 4.0/5.0/6.0单机实例,禁用了SYNC命令),建议将单机实例的数据迁移到主备实例,然后使用主备实例的控制台备份恢复功能。 父主题: 数据备份/导出/迁移
  • 在线迁移实例源端报“Disconnecting timedout slave”和“overcoming of output buffer limits” 当进行在线迁移时可能会出现如下报错: 源端报“Disconnecting timedout slave”,如下图: 解决方法:建议将源端Redis实例的repl-timeout参数值配置为300秒。 源端报“overcoming of output buffer limits”,如下图: 解决方法:建议将源端Redis实例的client-output-buffer-limit参数值配置为实例最大内存的20%。如果源端Redis是DCS实例,请配置client-output-buffer-slave-hard-limit和client-output-buffer-slave-soft-limit参数值为实例最大内存的20%。 父主题: 数据备份/导出/迁移
  • 是否支持控制台导出RDB格式的Redis备份文件? Redis 3.0实例 Redis 3.0是通过AOF文件持久化的,控制台仅支持备份和下载AOF格式的备份文件。如果需要RDB格式的备份文件可以通过Redis-cli导出: redis-cli -h {redis_address} -p 6379 [-a password] --rdb {output.rdb} Redis 4.0及以上基础版实例 Redis 4.0及以上基础版实例支持在控制台备份和下载AOF或RDB格式的备份文件。 Redis 6.0企业版实例 企业版高性能型实例支持备份和下载AOF或RDB格式的备份文件。 企业版存储型实例仅支持备份和下载RDB格式的备份文件。 单机实例不支持通过控制台备份数据。 父主题: 数据备份/导出/迁移
  • 源Redis使用了多DB,能否迁移数据到集群实例? DCS单机、读写分离和主备实例支持256个库,编号0-255。 如果目的实例为Cluster集群实例。Cluster集群实例只有1个库。 两个解决思路: 源Redis的不同DB合到同一个数据库。 申请多个DCS缓存实例。 迁移后实例连接地址和数据库编号有变化,业务注意改造和适配。 如果目的实例为Proxy集群。 Proxy集群默认不开启多DB,仅有一个DB0,请参考开启多DB操作开启Proxy集群多DB设置。再进行迁移。 父主题: 数据备份/导出/迁移
  • 为什么带宽使用率指标会超过100% 带宽使用率基本信息如下: 指标ID 指标名称 含义 取值范围 测量对象&维度 监控周期(原始指标) bandwidth_usage 带宽使用率 当前流量带宽与最大带宽限制的百分比 0-200% 测量对象: Redis 4.0及以上版本 主备、读写分离、集群实例数据节点 测量维度: dcs_cluster_node 1分钟 其中,带宽使用率的计算公式为:带宽使用率=(网络瞬时输入流量+网络瞬时输出流量)/(2*最大带宽限制)* 100%。 该公式中同时计算了网络瞬时输入流量和网络瞬时输出流量,这两个指标值是有统计主从同步的流量的。所以统计的总流量使用量会比正常的业务流量大一些,会发生带宽使用率指标超过100%的情况。 判断当前是否被限流,请使用流控次数这个指标,这个指标值大于0时,表示当前已使用的带宽超过最大带宽限制,产生流控。 限流时,流控次数指标是不统计主从同步流量的,所以有时候会出现带宽使用率指标超过100%,但流控次数为0的情况。 父主题: 监控告警
  • Redis实例是否支持SSL加密传输? Redis 6.0基础版实例SSL默认关闭,如需开启SSL加密传输,请参考SSL设置。 当前DCS Redis 3.0实例在开启公网访问时,支持基于Stunnel的客户端与服务端TLS加密传输(参考文档:Stunnel安装和配置)。在开启公网访问时,指定的CA会为每个实例生成唯一的服务证书。客户端可以使用从服务控制台上下载的CA根证书,并在连接实例时提供该证书,对实例服务端进行认证并达到加密传输的目的。 Redis 4.0/5.0不支持SSL加密传输,仅支持明文传输。 父主题: 安全性
  • Redis的Arm和x86实例有什么差异? 当前华为云DCS Redis实例的CPU架构支持Arm计算和x86计算。Arm Redis和x86的Redis两者功能是一样的。对客户端使用来说完全一样,没有额外的适配工作量。 可能在部分复杂的命令,大key且命令复杂度超过O(N)场景下,x86 Redis单CPU能力会强于Arm Redis。 综合来看,Arm Redis和x86 Redis能力和性能相当,都能满足业务需求,Arm Redis价格略低,请根据需要进行选择。 部分Region已停售“Arm计算”类型,推荐使用“x86计算”类型。 父主题: 实例类型/版本
  • 主备实例的只读地址是连接到主节点还是备节点? Redis 4.0及以上版本基础版主备实例的连接信息中,有“连接地址”和“只读地址”。其中,连接地址是连接主备实例的主节点,只读地址是连接主备实例的备节点。 详情可以参考Redis 4.0/5.0/6.0基础版主备实例架构设计。 图1 连接信息 默认情况下,客户端通过主备实例的主节点读、写数据,备节点用于同步数据。如需使用“只读地址”实现读写分离,需要在客户端增加用户读写请求判断,如果是写请求,将请求发送给读写域名,如果是读请求,将请求发送给只读域名。 父主题: 客户端和网络连接
  • 在线迁移能否做到完全不中断业务? 可以使用应用双写的方式,即在迁移过程中业务数据继续从源Redis中正常读取,同时将数据的增删改操作在华为云DCS的Redis实例中执行一遍。 保持以上状态运行一段时间后(等待较多的旧数据过期删除),把系统的缓存数据库正式切到华为云DCS。如涉及业务系统迁移云服务,需要在缓存数据库切换前完成业务系统的部署。 不推荐使用这种方式。原因如下: 网络无法保证稳定快速,如果源Redis实例不在DCS,则需要使用公网访问DCS,效率不高。 同时写2份数据,需要用户自行修改代码实现。 源Redis实例的数据逐出策略各有差异,迁移耗时可能较长,数据完整性保障难度大。 父主题: 数据备份/导出/迁移
  • 过期key删除机制 惰性删除:Redis的删除策略由主循环中的判断逻辑进行控制,所有Key读写命令执行之前都会调用函数对其进行检查,如果过期,则删除该键,然后返回Key不存在的结果;未过期则不做操作,继续执行原有的命令。 定期删除:由Redis的定时任务函数实现,该函数以一定的频率运行,每次运行时,都从键空间中取出一定数量的随机Key进行检查,并删除其中的过期键。 不是每次定时任务都会检查所有的Key,而是随机检查一定数量的Key,该机制旨在防止阻塞Redis主进程太久而造成业务阻塞,所以会造成已过期的Key释放内存速度较慢。
共100000条