云服务器内容精选
-
Lazy free机制 解决的痛点/问题 Redis是单线程程序,当运行一个耗时较大的请求时,会导致所有请求排队等待,在请求处理完成前,Redis不能响应其他请求,因此容易引发性能问题。而Redis删除大的集合键时,就属于一种比较耗时的请求。 原理 Redis 4.0提供的一种惰性删除或者说延迟释放机制,主要用于解决删除大key对Redis进程的阻塞,从而避免带来性能与可用性问题。 删除key时,Redis异步延时释放key的内存,把key释放操作放在bio(Background I/O)单独的子线程处理中。 使用方法 主动删除 unlink unlink与del命令目的一样,删除某个key。unlink在删除集合类键时,如果集合键的元素个数大于64个,会把内存释放操作,给单独的bio(Background I/O)线程来执行。因此unlink删除操作能在非常短的时间内完成包含上百万个元素的大key删除。 flushall/flushdb 通过对flushall/flushdb添加ASYNC异步清理选项,Redis在清理整个实例或单个DB时,操作都是异步的。 过期key删除、大key驱逐删除 被动删除有四种场景,每种场景对应一个配置参数,默认都是关闭: lazyfree-lazy-eviction no //针对redis内存使用达到maxmemory,并设置有淘汰策略时,是否采用lazy free机制 lazyfree-lazy-expire no //针对设置有TTL的键,过期后,被redis清理删除时是否采用lazy free机制 lazyfree-lazy-server-del no //针对有些指令在处理已存在的键时,会带有一个隐式的DEL键的操作 slave-lazy-flush no //针对slave进行全量数据同步,slave在加载master的RDB文件前,会运行flushall来清理自己的数据场景
-
为了减少大Key和热Key过大,有什么使用建议? string类型控制在10KB以内,hash、list、set、zset元素尽量不超过5000个。 Key的命名前缀为业务缩写,禁止包含特殊字符(比如空格、换行、单双引号以及其他转义字符)。 Redis事务功能较弱,不建议过多使用。 短连接性能差,推荐使用带有连接池的客户端。 如果只是用于数据缓存,容忍数据丢失,建议关闭持久化。 大Key/热Key的优化方法,请参考下表。 类别 方法 大Key 进行大Key拆分。 分为以下几种场景: 该对象为String类型的大Key:可以尝试将对象分拆成几个Key-Value, 使用MGET或者多个GET组成的pipeline获取值,分拆单次操作的压力。如果是集群实例,由于集群实例包含多个分片,拆分后的Key会自动平摊到集群实例的多个分片上,从而降低对单个分片的影响。 该对象为集合类型的大Key,并且需要整存整取:在设计上严格禁止这种场景的出现,因为无法拆分。有效的方法是将该大Key从Redis去除,单独放到其余存储介质上。 该对象为集合类型的大Key,每次只需操作部分元素:将集合类型中的元素分拆。以Hash类型为例,可以在客户端定义一个分拆Key的数量N,每次对HGET和HSET操作的field计算哈希值并取模N,确定该field落在哪个Key上,实现上类似于Redis Cluster的计算slot的算法。 将大Key单独转移到其余存储介质。 无法拆分的大Key建议使用此方法,将不适用Redis能力的数据存至其它存储介质,如SFS或者其余NoSQL数据库,并在Redis中删除该大Key。 注意: 禁止使用DEL直接删除大Key,可能会造成Redis阻塞,甚至主备倒换。Redis 4.0及以上版本建议采用UNLINK命令删除大Key。 合理设置过期时间并对过期数据定期清理。 合理设置过期时间,避免历史数据在Redis中大量堆积。由于Redis的惰性删除策略,过期数据可能并不能及时清理,如果发现Redis过期Key清理较慢,建议配置过期Key扫描。 热Key 使用读写分离。 如果热Key主要是读流量较大,则可以在客户端配置读写分离,降低对主节点的影响。还可以增加多个副本以满足读需求,但是备机较多也有相应的影响,D CS 主备节点之间使用的是星型复制,即所有的备节点都直接和主节点保持同步,这样能保证备节点之间相互独立,且复制延迟较小。缺点是在备节点数量较多的情况下,主节点的CPU和网络负载会较高。 使用客户端缓存/本地缓存。 该方案需要提前了解业务的热点Key有哪些,设计客户端/本地和远端Redis的两级缓存架构,热点数据优先从本地缓存获取,写入时同时更新,这样能够分担热点数据的大部分读压力。缺点是需要修改客户端架构和代码,改造成本较高。 设计熔断/降级机制。 热Key极易造成缓存击穿,高峰期请求都直接透传到后端数据库上,从而导致业务雪崩。因此热Key的优化一定需要设计系统的熔断/降级机制,在发生击穿的场景下进行限流和服务降级,保护系统的可用性。 父主题: 大Key/热Key分析/过期Key扫描
-
Redis实例是否支持多DB方式? Redis实例支持多DB方式的情况如下: Redis单机、读写分离和主备缓存实例支持多数据库(多DB),默认256个,DB编号为0-255。默认使用的是DB0。多数据库主要用于数据隔离,每个数据库的大小不是平均分配,可能会出现一个数据库将实例的内存完全占用的情况。 Redis Proxy集群默认只有一个DB。 如需创建多DB的Proxy集群实例请参考如何创建多DB的Proxy集群实例。 创建单DB的Proxy集群实例后,如需开启多DB的操作请参考Proxy集群使用多DB限制。 Redis 3.0 proxy不支持开启多DB。 Redis Cluster集群实例不支持多DB,只有一个DB,即DB0。 DB的个数不支持修改,每个DB的大小也不支持自定义。 父主题: 实例特性
-
应该选择 域名 还是IP地址连接Redis实例? 对于Redis单机、Proxy集群、读写分离实例: 每个实例只有1个IP地址和1个域名连接地址。实例发生主备交换前后,实例的IP地址和域名连接地址都不会改变。选择域名连接或IP连接不影响功能的使用。 对于Redis基础版主备实例: 每个实例有1个IP地址和2个域名连接地址,包含1个只读域名。实例发生主备交换前后,实例的IP地址和域名连接地址都不会改变。选择域名连接或IP连接不影响功能的使用。 使用域名连接时,需要考虑业务的读写请求区别,选择“连接地址”或“IP地址”连接不影响功能的使用,使用“只读地址”连接时只处理读请求(有读写分离需求的用户推荐直接使用读写分离实例)。 对于Redis 6.0企业版: 请使用域名连接实例,IP地址可能有多个或发生变化。 对于Cluster集群实例: Cluster集群是多主多从架构,有多组主从节点IP地址和1个域名连接地址。选择域名连接或IP连接不影响功能的使用。 使用IP地址连接实例时,可以使用任意一个IP地址连接实例,连接的节点会将请求发送到正确的节点上,使Cluster的全部节点都可以接收请求。建议配置多个或全部IP地址连接,避免所配置的IP地址所在节点故障时导致连接失败。 域名解析返回的IP数量最多为50个,如需限制解析返回的IP数量,请联系后台管理人员。 如果客户端服务器和Redis实例不在同一Region,需要跨Region访问Redis实例时,实例域名无法跨Region解析,无法通过域名访问。可以通过在hosts中手动配置域名与IP绑定关系或使用IP进行访问。参考Redis连接约束。 连接实例请参考连接Redis缓存实例。 父主题: 客户端和网络连接
-
大Key和热Key的影响 类别 影响 大Key 造成规格变更失败。 Redis集群变更规格过程中会进行数据rebalance(节点间迁移数据),单个Key过大的时候会触发Redis内核对于单Key的迁移限制,造成数据迁移超时失败,Key越大失败的概率越高,大于512MB的Key可能会触发该问题。 造成数据迁移失败。 数据迁移过程中,如果一个大Key的元素过多,则会阻塞后续Key的迁移,后续Key的数据会放到迁移机的内存Buffer中,如果阻塞时间太久,则会导致迁移失败。 容易造成集群分片不均的情况。 各分片内存使用不均。例如某个分片占用内存较高甚至首先使用满,导致该分片Key被逐出,同时也会造成其他分片的资源浪费。 各分片的带宽使用不均。例如某个分片被频繁流控,其他分片则没有这种情况。 客户端执行命令的时延变大。 对大Key进行的慢操作会导致后续的命令被阻塞,从而导致一系列慢查询。 导致实例流控。 对大Key高频率的读会使得实例出方向带宽被打满,导致流控,产生大量命令超时或者慢查询,业务受损。 导致主备倒换。 对大Key执行危险的DEL操作可能会导致主节点长时间阻塞,从而导致主备倒换。 热Key 容易造成集群分片不均的情况。 造成热Key所在的分片有大量业务访问而同时其他的分片压力较低。这样不仅会容易产生单分片性能瓶颈,还会浪费其他分片的计算资源。 使得CPU冲高。 对热Key的大量操作可能会使得CPU冲高,如果表现在集群单分片中就可以明显地看到热Key所在的分片CPU使用率较高。这样会导致其他请求受到影响,产生慢查询,同时影响整体性能。业务量突增场景下甚至会导致主备切换。 易造成缓存击穿。 热Key的请求压力过大,超出Redis的承受能力易造成缓存击穿,即大量请求将被直接指向后端的数据库,导致数据库访问量激增甚至宕机,从而影响其他业务。 对于如何避免产生大Key和热Key,需要在业务设计阶段就考虑。参考Redis使用规范。
-
如何优化大Key和热Key 类别 方法 大Key 进行大Key拆分。 分为以下几种场景: 该对象为String类型的大Key:可以尝试将对象分拆成几个Key-Value, 使用MGET或者多个GET组成的pipeline获取值,分拆单次操作的压力。如果是集群实例,由于集群实例包含多个分片,拆分后的Key会自动平摊到集群实例的多个分片上,从而降低对单个分片的影响。 该对象为集合类型的大Key,并且需要整存整取:在设计上严格禁止这种场景的出现,因为无法拆分。有效的方法是将该大Key从Redis去除,单独放到其余存储介质上。 该对象为集合类型的大Key,每次只需操作部分元素:将集合类型中的元素分拆。以Hash类型为例,可以在客户端定义一个分拆Key的数量N,每次对HGET和HSET操作的field计算哈希值并取模N,确定该field落在哪个Key上,实现上类似于Redis Cluster的计算slot的算法。 将大Key单独转移到其余存储介质。 无法拆分的大Key建议使用此方法,将不适用Redis能力的数据存至其它存储介质,如SFS或者其余NoSQL数据库,并在Redis中删除该大Key。 注意: 禁止使用DEL直接删除大Key,可能会造成Redis阻塞,甚至主备倒换。Redis 4.0及以上版本建议采用UNLINK命令删除大Key。 合理设置过期时间并对过期数据定期清理。 合理设置过期时间,避免历史数据在Redis中大量堆积。由于Redis的惰性删除策略,过期数据可能并不能及时清理,如果发现Redis过期Key清理较慢,建议配置过期Key扫描。 热Key 使用读写分离。 如果热Key主要是读流量较大,则可以在客户端配置读写分离,降低对主节点的影响。还可以增加多个副本以满足读需求,但是备机较多也有相应的影响,DCS主备节点之间使用的是星型复制,即所有的备节点都直接和主节点保持同步,这样能保证备节点之间相互独立,且复制延迟较小。缺点是在备节点数量较多的情况下,主节点的CPU和网络负载会较高。 使用客户端缓存/本地缓存。 该方案需要提前了解业务的热点Key有哪些,设计客户端/本地和远端Redis的两级缓存架构,热点数据优先从本地缓存获取,写入时同时更新,这样能够分担热点数据的大部分读压力。缺点是需要修改客户端架构和代码,改造成本较高。 设计熔断/降级机制。 热Key极易造成缓存击穿,高峰期请求都直接透传到后端数据库上,从而导致业务雪崩。因此热Key的优化一定需要设计系统的熔断/降级机制,在发生击穿的场景下进行限流和服务降级,保护系统的可用性。
-
大Key和热Key的定义 大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所占用。
-
前提条件 已创建DCS Redis实例,作为迁移的目的数据库。请参考创建DCS Redis缓存实例。 如果您的源端是华为云的MySQL数据库,Redis实例请选择与MySQL数据库实例相同的VPC。 已有MySQL数据库,并在其中创建一张表,作为源端数据库中的数据。 例如,在MySQL数据库中创建一张名为student_info的表格,表中共有4列,迁移后表中的id列的值将成为Redis中的hash的key,其余的列名将成为hash的field,而列的值作为field对应的value。 MySQL数据库所在服务器与DCS缓存实例网络互通。 MySQL数据库与Redis实例所在VPC为同一VPC 同一VPC内网络默认互通。 MySQL数据库与Redis实例所在VPC为相同region下的不同VPC 如果MySQL数据库所在VPC与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 MySQL数据库与Redis实例所在VPC不在相同region 如果MySQL数据库和Redis实例不在同一region,仅支持通过云专线打通网络,请参考云专线。 公网访问 MySQL数据库所在服务器公网访问Redis 4.0/5.0/6.0实例时,需要开启实例公网访问开关,具体请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址。 MySQL数据库所在服务器已安装JDK1.8以上版本和Intellij IDEA开发工具,下载jedis客户端(点此处下载jar包)。 本文档下载的开发工具和客户端仅为示例,您可以选择其它类型的工具和客户端。
-
方案概述 应用场景 随着互联网等数据库应用行业的逐渐发展,业务需求急速增加,数据量和并发访问量呈指数级增长,仅依附于传统关系型数据库难以支撑上层业务。传统数据库存在结构复杂、维护成本高、访问性能差、功能有限、无法轻松适应数据模型或模式的变化等问题。 解决方案 将Redis作为应用与数据库之间的缓存层可以解决上述问题,通过Redis缓存数据,提高数据读取速度,减轻数据库负载,提高应用性能,保证数据的可靠性。 因此,对于传统的关系型数据库例如MySQL,可以将其数据迁移到Redis中。Redis中的数据是以键值结构进行存储的,在迁移前需要将传统的数据库转换为特定的结构。本文以将MySQL数据库中的一张表迁移到华为云DCS Redis中为例,介绍数据迁移的过程。
-
方案概述 应用场景 视频、直播弹幕展示和社交网站评论回复等场景,要求时效性高,互动性强,类似这样的业务对平台的系统时延有着非常高的要求。如果使用关系型数据库,会涉及到按评论时间逆排序,随着评论越来越多,排序效率越来越低,且并发频繁。 解决方案 使用分布式缓存服务(DCS)的Redis缓存,可以从不同的维度,对某个key-value的列表进行降序显示。例如,直播弹幕中的弹幕列表,可以采用zset有序集合结构,以时间戳为score权重参数进行排序,value可以直接存储弹幕内容。社交网站评论回复,同样也可以采用zset结构,但是由于社交网站评论和回复的内容很多,展示结构有一定的层级,同时需要持久化到本地,可以用value存储评论主键ID,评论内容存放到数据库,通过ID查询评论内容。
-
前提条件 已创建DCS缓存实例,且状态为“运行中”。 客户端所在服务器与DCS缓存实例网络互通: 客户端与Redis实例所在VPC为同一VPC 同一VPC内网络默认互通。 客户端与Redis实例所在VPC为相同region下的不同VPC 如果客户端与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 客户端与Redis实例所在VPC不在相同region 如果客户端服务器和Redis实例不在同一region,仅支持通过云专线打通网络,请参考云专线。 公网访问 客户端公网访问Redis 4.0/5.0/6.0实例时,需要开启实例公网访问开关,具体请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址。 客户端所在的服务器已安装JDK1.8以上版本和开发工具(本文档以安装Eclipse为例),下载jedis客户端(单击此处直接下载jar包)。 本文档下载的开发工具和客户端仅为示例,您可以选择其它类型的工具和客户端。
-
运行结果 视频直播 弹幕代码示例运行结果如下: 直播弹幕列表 弹幕内容: message-07f1add5-2f85-4309-9f31-313c860b33dc, 发送时间: 1686902337377 弹幕内容: message-2062e817-3145-4d8b-af7f-46f334c8569c, 发送时间: 1686902337394 弹幕内容: message-ad36a0ca-e8bd-4883-a091-e12a25c00106, 发送时间: 1686902337396 弹幕内容: message-f02f9960-bb57-49ae-b7d8-6bd6d3ad3d14, 发送时间: 1686902337412 弹幕内容: message-5ca39948-866e-4e54-a469-f958cae843f6, 发送时间: 1686902337457 弹幕内容: message-5cc8b4ba-da61-4d01-9625-cf2e7337ef10, 发送时间: 1686902337489 弹幕内容: message-15378516-18ce-4da7-bd3c-35c57dd65602, 发送时间: 1686902337495 弹幕内容: message-1b280525-53e5-4fc6-a3e7-fb8e71eef85e, 发送时间: 1686902337540 弹幕内容: message-adf876d1-e747-414e-92a2-397fc329bd58, 发送时间: 1686902337541 弹幕内容: message-1d8d7901-164f-4dd4-abb4-6f2345164b0e, 发送时间: 1686902337582 弹幕内容: message-fb35b1b4-277a-48bf-b22b-80070aae8475, 发送时间: 1686902337667 弹幕内容: message-973b1b03-bf95-44d8-ab91-0c317b2d61b3, 发送时间: 1686902337755 弹幕内容: message-1481f883-757d-47f7-b8c0-df024d6e64a4, 发送时间: 1686902337770 弹幕内容: message-b79292ca-2409-43fb-aaf0-e33f3b9d9c8d, 发送时间: 1686902337820 弹幕内容: message-66b0e955-d509-4475-9ae5-12fb86cf9596, 发送时间: 1686902337844 弹幕内容: message-12b6d15a-037a-47ee-8294-8625d202c0a0, 发送时间: 1686902337907 弹幕内容: message-fbc06323-da2a-44b8-874b-d2cf1a737064, 发送时间: 1686902337927 弹幕内容: message-7a0f787c-aff1-422f-9e62-4beda0cd5914, 发送时间: 1686902337977 弹幕内容: message-8ba5e4e0-22af-4f80-90a6-35062967e0fd, 发送时间: 1686902337992 弹幕内容: message-fa9e1169-e918-4141-9805-87edcf84c379, 发送时间: 1686902338000 弹幕内容: message-5d17be15-ba2e-461f-aba5-65c20c21d313, 发送时间: 1686902338059 弹幕内容: message-dcedc840-1be7-496a-b781-5b79c2091fe5, 发送时间: 1686902338067 弹幕内容: message-9e39eb28-6629-4d4c-8970-2acdc0e81a5c, 发送时间: 1686902338102 弹幕内容: message-030b11fe-c258-4ca2-ac82-5e6ca1eb688f, 发送时间: 1686902338211 弹幕内容: message-93322018-a987-47ba-8093-3937dddda97d, 发送时间: 1686902338242 弹幕内容: message-bc04a9b0-ec83-4a24-83f6-0a4f25ee8896, 发送时间: 1686902338281 弹幕内容: message-c6dd96d0-c938-41e4-b5d8-6275fdf83050, 发送时间: 1686902338290 弹幕内容: message-12b70173-1b86-4370-a7ea-dc0ade135422, 发送时间: 1686902338312 弹幕内容: message-a39c2ef8-8167-4945-b60d-355db6c69005, 发送时间: 1686902338318 弹幕内容: message-2c3bf2fb-5298-472c-958c-c4b53d734e89, 发送时间: 1686902338326 最新的5条弹幕信息 弹幕内容: message-2c3bf2fb-5298-472c-958c-c4b53d734e89, 发送时间: 1686902338326 弹幕内容: message-a39c2ef8-8167-4945-b60d-355db6c69005, 发送时间: 1686902338318 弹幕内容: message-12b70173-1b86-4370-a7ea-dc0ade135422, 发送时间: 1686902338312 弹幕内容: message-c6dd96d0-c938-41e4-b5d8-6275fdf83050, 发送时间: 1686902338290 弹幕内容: message-bc04a9b0-ec83-4a24-83f6-0a4f25ee8896, 发送时间: 1686902338281 Process finished with exit code 0
-
约束与限制 Pipeline不能保证原子性。 Pipeline模式只是将客户端发送命令的方式改为批量发送命令,而服务端在批量处理命令的数据流时,仍然是解析出多个单命令并按顺序执行,各个命令相互独立,即服务端仍有可能在该过程中执行其他客户端的命令。如需保证原子性,请使用事务或Lua脚本。 若Pipeline执行过程中发生错误,不支持回滚。 Pipeline没有事务的特性,如待执行的命令前后存在依赖关系,请勿使用Pipeline。 如果某些客户端(例如redis-py)在实现Pipeline时使用事务命令MULTI、EXEC进行伪装,请您在使用过程中关注Pipeline与事务的区别,否则可能会产生报错,关于事务的限制请参见Redis transactions。
-
方案概述 分布式缓存服务Redis支持原生Redis的Pipeline(管道传输)机制,通过Pipeline机制可以将多个命令同时发给Redis服务端,减少网络延迟,提高性能。 通常在非Pipeline的模式下,Redis客户端(Client)向Redis发送一个命令后,会等待服务端(Server)返回结果,然后再发送下一个命令,以此类推。但在Pipeline模式下,客户端发送一个命令后无需等待服务端返回执行结果,会继续发送其他命令。在全部命令发送完毕后,客户端关闭请求,开始接收响应,把收到的执行结果与之前发送的命令按顺序进行匹配。 图1 非Pipeline模式与Pipeline模式的网络通信示意图 在Pipeline模式的具体实现中,大部分Redis客户端采用批量处理的方式,即一次发送多个命令,在接收完所有命令执行结果后再返回给上层业务。通过Pipeline模式可降低网络往返时延(Round-trip time,简称RTT),减少read()和write()的系统调用和进程切换次数,从而提升程序的执行效率与性能。 因此,在需要执行Redis批量操作,且用户无需立即获得每个操作结果的场景下,可以使用Pipeline作为优化性能的批处理工具。 使用Pipeline时客户端将独占与服务器端的连接,此期间将不能进行其他“非Pipeline”的操作,直至Pipeline被关闭。如果需要同时执行其他操作,可以为Pipeline操作单独建立一个连接,将其与常规非Pipeline操作分开。 关于Pipeline的更多介绍,请参见Redis pipeline。
-
实例类型变更须知 表1 DCS实例类型变更明细 实例版本 支持的实例变更类型 变更须知及影响 Redis 3.0 单机实例变更为主备实例 连接会有秒级中断,大约1分钟左右的只读。 主备实例变更为Proxy集群实例 如果Redis 3.0主备实例数据存储在多DB上,或数据存储在非DB0上,不支持变更为Proxy集群;数据必须是只存储在DB0上的主备实例才支持变更为Proxy集群。 连接会中断,5~30分钟只读。 Memcached 单机实例变更为主备实例 会有秒级业务中断、大约1分钟只读。 Redis 4.0/5.0 主备实例或读写分离实例变更为Proxy集群实例 变更为proxy集群时,需要评估proxy集群的多DB使用限制和命令使用限制对业务的影响。具体请参考proxy集群使用多DB限制,实例受限使用命令。 变更前实例的已用内存必须小于变更后最大内存的70%,否则将不允许变更。 如果变更前实例的已用内存超过总内存的90%,变更的过程中可能会导致部分key逐出。 变更完成后需要对实例重新创建告警规则。 如果原实例是主备实例,请确保应用中没有直接引用只读IP或只读域名。 请确保您的客户端应用具备重连机制和处理异常的能力,否则在变更规格后有可能需要重启客户端应用。 变更规格过程中会有秒级业务中断、大约1分钟只读,建议在业务低峰时进行变更。 Proxy集群实例变更为主备实例或读写分离实例 除了上表中提到的实例外,其他实例类型目前不支持实例类型的变更,若您想实现跨实例类型的规格变更,可参考使用迁移任务在线迁移Redis实例进行操作。 实例类型变更后支持的命令,请参考对应的开源命令兼容性。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格