华为云用户手册

  • DSC可以检测哪些类型的异常事件? 数据安全中心 服务当前仅支持对OBS桶数据进行异常检测。 DSC根据敏感数据规则对OBS桶进行识别,根据识别的敏感数据进行监控,监控到敏感数据的异常事件相关操作后,会将监控结果展示在异常事件处理页面中,用户可根据需要对异常事件进行处理。DSC支持检测的异常类型和异常内容如表1所示。 表1 DSC异常检测 异常类型 异常内容 数据访问异常 敏感文件的越权操作。 敏感文件的下载操作。 数据操作异常 敏感文件的更新操作。 敏感文件的文件内容追加操作。 敏感文件的删除操作。 敏感文件的复制操作。 数据管理异常 添加桶时,检测到桶为公共读或公共读写桶。 添加桶时,检测到私有桶对匿名用户或注册用户组开通了访问/ACL访问权限。 含有敏感文件的桶出现桶策略更改、删除操作。 含有敏感文件的桶出现桶ACL更改、删除操作。 含有敏感文件的桶出现跨区域复制配置的更改、删除操作。 敏感文件的对象出现ACL更改、删除操作。 相关文档: 如何处理异常事件? 如何查看异常事件? 父主题: 数据审计
  • 对待注入水印的源数据有什么要求? 由于注入水印的原理是将水印原子信息嵌入到不同特征的数据中去,因此源数据特征越多,越能嵌入完整的水印信息、提高提取成功率,并且即使缺失部分数据也不影响水印提取。所以对需要注入水印的数据有如下要求: 待注入水印的源数据需要大于等于1000行。 小于1000行的源数据有可能因为特征不够导致提取水印失败。 尽量选取数据取值比较多样的列注入水印,如果该列的值是可枚举穷尽的,则有可能因为特征不够导致提取失败。 常见的适合嵌入水印的列如地址、姓名、UUID、金额、总数等。 父主题: 数据水印类
  • 如何同时启动多个敏感数据识别规则组? DSC根据不同的场景预置了100+条敏感数据识别和脱敏规则,可对个人敏感信息(身份证、银行卡、姓名、手机号、邮箱等)、企业敏感信息(营业执照号码、税务登录证号码等)、密钥敏感信息(PEM证书、HEY私钥等)、设备敏感信息(IP地址、MAC地址、IPV6地址等)、位置敏感信息(省份、城市、GPS位置、地址等)和通用敏感信息(日期)等敏感信息进行识别和脱敏。同时,DSC也支持自定义识别规则,自定义识别规则的操作方法请参见新增敏感数据规则。 在为同一个资产创建扫描任务时,可添加多个“识别规则组”,同时启动多个敏感数据识别规则,实现为同一资产配置多场景的扫描任务,如图1所示。具体的操作请参见创建敏感数据识别任务。 图1 新建任务 父主题: 数据识别和数据脱敏
  • Redis迁移失败有哪些常见原因? 在进行数据迁移时,如果Redis实例发生了主备倒换,可能会导致迁移失败。可联系技术支持,将主备倒换关闭,待迁移成功后,再开启主备倒换。 如果是在线迁移,请确认源Redis实例,是否禁用了SYNC和PSYNC命令,如果禁用了,需要先开启,允许数据同步。 如果是单机/主备实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保单机/主备实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保单机/主备实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。 父主题: 数据备份/导出/迁移
  • 解决方案 添加一段代码,指定RESP2协议访问Redis即可解决: package com.chinaroad.parking.config;import io.lettuce.core.ClientOptions;import io.lettuce.core.protocol.ProtocolVersion;import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;@Configurationpublic class SpringConfig implements LettuceClientConfigurationBuilderCustomizer { @Override public void customize(LettuceClientConfiguration.LettuceClientConfigurationBuilder clientConfigurationBuilder) { // manually specifying RESP2 clientConfigurationBuilder.clientOptions(ClientOptions.builder() .protocolVersion(ProtocolVersion.RESP2) .build()); }}
  • hashtag原理 单实例上的mset、lua脚本等处理多key时,是一个原子性(atomic)操作,所有给定key都会在同一时间内被执行。集群每次通过对key进行hash计算到不同的分片,所以集群上同时执行多个key,不再是原子性操作,会存在某些给定 key 被更新而另外一些给定key没有改变的情况,其原因是需要设置的多个key可能分配到不同的机器上。因此集群引入了hashtag来对多key同时操作,在设置了hashtag的情况下,集群会根据hashtag决定key分配到的slot, 当两个key拥有相同的hashtag时, 它们会被分配到同一个slot。
  • hashtag使用规则 第一次出现“{”和接下来第一次出现的“}”之间有内容。 例如: 这两个键{user1000}.following和{user1000}.followers由于只有一对{},将user1000来计算hash。 对于键foo{}{bar},整个键foo{}{bar}将像往常一样计算hash,因为第一次出现的“{”后面跟“}”中间没有字符。 对于键foo{{bar}}zap,子字符串{bar将被计算hash,因为它是第一次出现“{”和第一次出现“}”之间的子字符串。 对于键foo{bar}{zap}的子字符串bar将被计算hash,因为只使用第一个“{”和“}”。
  • hashtag用法示例 当如下操作时: EVAL "redis.call('set',KEYS[1],ARGV[1]) redis.call('set',KEYS[2],ARGV[2])" 2 key1 key2 value1 value2 出现以下报错: ERR 'key1' and 'key2' not in the same slot 可通过hashtag进行解决: EVAL "redis.call('set',KEYS[1],ARGV[1]) redis.call('set',KEYS[2],ARGV[2])" 2 {user}key1 {user}key2 value1 value2
  • Key的保存时间是多久?如何设置Key的过期时间? Key的保存时间是多久? 如果没有设置过期Key,数据会一直存在。 如果设置了过期Key,过期Key的删除机制请参考过期Key扫描。 如果已经设置了过期Key,希望移除设定的过期时间,可使用Redis PERSIST命令。 如何设置过期Key? 可使用expire或pexpire命令设置某个key过期时间,例如执行expire key1 100命令后,则key1在100秒后将过期;执行pexpire key2 1800后,则key2在1800毫秒后将过期。 expire是以秒作为key过期时间,pexpire是以毫秒作为key过期时间。 父主题: 大Key/热Key分析/过期Key扫描
  • 不同编程语言如何使用Cluster集群客户端 当前D CS 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使用
  • Sentinel原理 Redis Sentinel是一个分布式系统,Sentinel的设计基础在于多个Sentinel进程协同工作,这样做的好处有: 只有当多个哨兵一致同意某主节点不可用,才执行故障检测,这能够降低误报的可能性。 即使有些Sentinel进程故障,Sentinel系统也能正常工作,从而抵御故障。 从更大范围来看,Sentinel加上Redis主从节点以及连接到Sentinel和Redis的客户端,整体也构成一个更大的分布式系统。
  • 如何导出Redis实例数据? 主备、集群和读写分离实例: 主备、集群和读写分离实例支持备份功能,可以执行以下操作将数据导出: 进入缓存管理页面,切换到“备份与恢复”页签,查看实例的备份记录。 如没有记录,则手动执行备份动作,执行完后,单击“下载”,根据提示完成数据的下载操作。 如果您的实例创建时间非常早,由于实例版本没有升级而无法兼容备份恢复功能,请联系技术支持将缓存实例升级到最新版本,升级后就可以支持备份恢复功能。 单机实例: 单机实例不支持备份功能,用户可以通过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和Redis 5.0单机实例,禁用了SYNC命令),建议将单机实例的数据迁移到主备实例,然后使用主备实例的备份功能。 父主题: 数据备份/导出/迁移
  • Sentinel功能 监控:Sentinel不间断地检查主从节点是否都在正常工作。 通知:如果Redis中某节点故障,Sentinel可以通过API通知系统管理员或其他计算机程序。 自动故障切换:如果主节点异常,Sentinel启动故障切换,将一个从节点升主,其他从节点从新的主节点进行复制,并通知使用该Redis的应用程序使用新地址进行连接。 客户端配置来源:Sentinel充当客户端服务发现的权威来源。客户端连接到Sentinel,请求当前负责特定业务的Redis主节点地址。如果发生故障切换,Sentinels将下发新地址。
  • DCS实例如何缩容? DCS实例支持扩容和缩容明细如下表1。 表1 实例规格变更明细 缓存类型 单机实例 主备实例 Cluster集群实例 Proxy集群实例 读写分离实例 Redis 3.0 支持扩容和缩容 支持扩容和缩容 支持扩容和缩容 仅支持扩容 - Redis 4.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容和缩容 支持扩容、缩容和副本数变更 Redis 5.0 支持扩容和缩容 支持扩容、缩容和副本数变更 支持扩容、缩容和副本数变更 支持扩容和缩容 支持扩容、缩容和副本数变更 Memcached 支持扩容和缩容 支持扩容和缩容 - - - Redis 6.0 基础版 支持扩容和缩容 支持扩容和缩容 - - - Redis 6.0 企业版 - 暂不支持实例变更 - - - 实例扩容、缩容操作请参考规格变更。 如果Redis 3.0 Proxy集群需要缩容,可以先进行数据备份,然后另外购买对应规格的Proxy集群实例,使用备份文件导入方式,将备份数据文件导入到新的Proxy集群实例。待数据迁移完成后,再释放原来规格的Proxy集群实例。在线迁移操作,可以参考备份文件导入方式。 父主题: 扩容缩容与实例升级
  • 是否支持控制台导出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 5.0实例 Redis 4.0/5.0实例支持选择AOF和RDB格式进行持久化,支持在控制台备份和下载AOF和RDB文件。 父主题: 数据备份/导出/迁移
  • Redis主备同步机制怎样? Redis主备实例即主从实例。一般情况下,Redis主节点的更新会自动复制到关联的备节点。但由于Redis异步复制的技术,备节点更新可能会落后于主节点。例如,主节点的I/O写入速度超过了备节点的同步速度,或者因异常原因导致的主节点和备节点的网络延迟,使得备节点与主节点存在滞后或者部分数据不一致,若此时进行主备切换,未及时完成同步的少量数据可能会丢失。 父主题: 主备倒换
  • 发生主备倒换的原因有哪些? 主备倒换有3种可能场景: 用户自行从DCS控制台界面发起“主备倒换”操作,切换主实例。 DCS检测到主备实例的主节点存在故障后,触发实例“主备倒换”操作。 例如,使用了keys等消耗资源的命令、日志老化批量删除日志,导致CPU超高,都会触发主备倒换。 用户在DCS界面上执行重启操作,可能触发备节点升主节点,即主备倒换。 发生主备倒换后,系统会上报主备倒换事件,收到该事件通知后,请查看客户端业务否存在异常,如果业务不正常,则需要确认客户端tcp连接是否正常,是否支持在主备倒换后重新建立tcp连接恢复业务。 父主题: 主备倒换
  • 使用Cluster的Redis集群时建议配置合理的超时时间 客户端配置问题导致无法连接。 当集群实例备节点故障情况下,客户端使用SpringBoot + Lettuce的方式连接Redis,使用的Lettuce客户端在连接集群时,需要与所有节点先建立连接(包括故障节点)。 在未配置timeout超时的情况下,模拟备节点故障时,可能出现分钟级的超时阻塞(Lettuce客户端的老版本默认超时为120s,新版本默认为60s),配置如下图: 可能会导致端到端业务访问时间过长(最长达到默认超时时间),如下图所示: 在客户端侧添加timeout参数后,备节点超时时间大幅度缩短,并且可以根据客户自己的业务诉求进行调整,配置如下: 配置后查看端到端业务访问时间如下图所示: 因此在未配置timeout参数情况下,客户端在建立连接时,故障节点由于未配置timeout超时,在建立连接时会出现连接阻塞的情况。 建议:用户需根据业务能容忍的超时时间进行设置,例如在一次HTTP端到端请求中,需要请求两次Redis,而HTTP请求的最大超时时间为10s,则建议将超时时间配置为5s,防止由于超时时间过长或者未配置超时时间造成故障场景下的业务受损。 父主题: Redis使用
  • DCS的Memcached过期数据清除策略是什么? DCS的Memcached作为缓存产品是允许用户根据业务需求设置在其中存放数据的过期时间的。例如在执行add操作的时候可以设置expire过期时间。 DCS的Memcached默认策略为不逐出(noeviction)。当前版本支持在配置运行参数中修改逐出策略。 具体的6种数据逐出策略与Redis逐出策略一致,具体请参考Redis默认的数据逐出策略是什么?。 父主题: Memcached使用
  • 迁移任务安全组说明 使用DCS在线迁移时,创建迁移任务需要选择安全组,迁移任务所选安全组的“出方向规则”需要放通源端Redis和目标端Redis的IP和端口(默认情况下安全组出方向是全部放通的,则无需再单独放通)。 使用DCS的备份迁移时,会使用到“default”安全组,需确认“default”安全组的“出方向规则”全部放通(默认情况下安全组出方向是全部放通的,则无需再单独放通)。 图2 迁移任务安全组“出方向规则”
  • VPC内访问Redis 3.0/Memcached/Redis 6.0企业版实例 客户端只能部署在与DCS缓存实例处于相同虚拟私有云(VPC)和相同子网的弹性云服务器(ECS)上。 除了ECS、DCS缓存实例必须处于相同VPC之外,还需要他们的安全组分别配置了正确的规则,客户端才能访问DCS缓存实例。 如果ECS、DCS缓存实例配置相同的安全组,安全组创建后,默认包含组内网络访问不受限制的规则。 如果ECS、DCS缓存实例配置了不同安全组,可参考如下配置方式: 假设ECS、DCS缓存实例分别配置了安全组:sg-ECS、sg-DCS。 以Redis 3.0访问端口6379为例,其它实例请以实际情况为准。 以下规则,远端可使用安全组,也可以使用具体的IP地址。 配置ECS所在安全组。 ECS所在安全组需要增加如下出方向规则,以保证客户端能正常访问DCS缓存实例。如果出方向规则不受限,则不用添加。 配置DCS缓存实例所在安全组。 DCS实例所在安全组需要增加如下入方向规则,以保证能被客户端访问。 缓存实例的入方向规则中,源地址建议使用指定IP地址,慎用“0.0.0.0/0”,避免绑定相同安全组的弹性云服务器遭受Redis漏洞攻击。
  • 如何确认实例是单DB还是多DB 单机、主备、读写分离实例类型都为多DB(256个,DB编号为0-255)。 Proxy集群实例默认只有一个DB,支持手动开启多DB,如需开启多DB的操作请参考Proxy集群使用多DB限制。 Redis Cluster集群实例不支持多DB,只有一个DB。 Redis 4.0及以上版本的实例,通过控制台连接redis实例后,即可以查看是否为多DB,如下图所示。 图1 连接Redis 图2 查看Database 父主题: Redis使用
  • Cluster集群实例容量和性能未达到瓶颈,但某个分片容量或性能已过载是什么原因? 这是由于Cluster集群采用的是分片设计理念,每个具体的Key只能分布到某一个具体的分片节点上,计算Key的分布过程有以下两个步骤: 针对Key值进行CRC16算法计算后对16384取模,得到对应的槽位(Slot)值。 根据S槽位(Slot)和分片的映射关系,找到Key具体应该属于的分片,并且进行存取。 所以,Key并没有均匀分布在实例的各个分片上,是根据计算结果进行存取的。在大Key和热Key存在时,就会出现某个分片容量或性能已过载,但其他分片内存负载还是很低,并没有达到容量和性能的瓶颈。 父主题: Redis使用
  • 创建Memcached实例时如何选择可用区? 简单来说,只要是在同一区域(Region)内,选择任意一个可用区内DCS的Memcached都没有功能上的本质区别。 一般来讲,同一可用区比跨可用区的网络时延更有优势,但是跨可用区从容灾的角度比同可用区更有优势。当应用内部需要更低的网络时延,可以将应用实例组部署在同一个可用区中。 DCS的Memcached目前已支持跨可用区部署,在管理控制台创建DCS的Memcached时进行配置。只要与您的ECS在同一个区域(Region)内,无论选择创建哪个可用区的Memcached都可以实现与ECS正常的连通使用。若您希望获得更低的网络时延,请根据您ECS的可用区选择创建对应可用区的Memcached。 例如,您有一台华南-广州的ECS,其属于华南-广州可用区B,那么当您在购买DCS的Memcached时,选择华南-广州任何一个可用区的实例都是可以正常使用的。您选择华南-广州可用区B的实例可以获得与这台ECS更低的网络时延。 注意:由于资源库存因素,可能出现您在创建DCS的Memcached时仅有一个可用区资源供选择的情况,这不会影响您的正常使用。 父主题: Memcached使用
  • Memcached实例支持公网访问么? Memcached实例暂不支持公网访问。 未开启公网访问的DCS缓存实例,本地环境不能直接连接DCS缓存实例。DCS采用虚拟私有云(VPC)管理各服务的网络安全,用户创建的DCS缓存实例,必须通过与DCS缓存实例相同虚拟私有云(VPC)的弹性云服务器(ECS)来访问。 如果您在应用开发调试阶段,可以通过网络代理转发的方式,用一台能与DCS缓存实例网络互通的弹性云服务器(ECS)做中转,实现本地环境连接DCS缓存实例。具体操作参考使用SSH隧道代理机制实现公网访问DCS实例。 父主题: Memcached使用
  • DCS的Memcached与自建Memcached的区别是什么? DCS的Memcached与本地自建Memcached的区别如下表1所示。 表1 DCS Memcached与自建Memcached的区别 比较项 DCS Memcached 自建Memcached 部署 DCS的Memcached简单易用,创建后缓存服务即时可用,实现快速部署,无需关心硬件及软件。 自己搭建Memcached的操作和设置较复杂。 可用性 DCS的Memcached主备实例支持双机热备,能够持续提供稳定的服务,在主节点故障时,备节点秒级自动升级为主节点,避免单点故障。 自建的Memcached服务需要自行实现高可用。 安全 DCS的Memcached采用公有云的VPC和安全组进行网络访问安全控制。 自建的Memcached服务需要用户自行设计并实现安全机制。 扩容 DCS的Memcached支持在线扩容,在控制台简单操作,即可完成扩容。 自建的Memcached服务的扩容稍复杂,需要自己添加硬件配置,重启服务。 父主题: Memcached使用
  • 什么是大Key/热Key? 名词 定义 大Key 大Key可以分为两种情况: Key的Value较大,例如一个String类型的Key大小达到10MB,或者一个集合类型(Hash,List,Set等)的元素总大小达到了100MB。一般单个String类型的Key大小达到10KB,或者集合类型的Key总大小达到50MB,则定义其为大Key。 Key的元素较多,例如一个Hash类型的Key,其元素数量达到了10000。一般定义集合类型的Key中元素超过5000个,则认为其为大Key。 热Key 通常以一个Key被操作的频率和占用的资源来判定其是否为热Key,例如: 某个集群实例一个分片每秒处理10000次请求,其中有3000次都是操作同一个Key。 某个集群实例一个分片的总带宽使用(入带宽+出带宽)为100Mbits/s,其中80Mbits是由于对某个Hash类型的Key执行HGETALL所占用。 父主题: 大Key/热Key分析/过期Key扫描
  • 如何分析Redis 3.0实例的热Key? 由于Redis 3.0本身不提供热Key能力,您可以参考以下方法进行分析。 方法1:进行业务结构和业务实现分析,找到可能的热Key。 例如,某商品在秒杀,或者用户登录,对业务代码分析,很容易找到热Key。 优点:简单易行。 缺点:需要对业务代码比较了解,另外对于一些复杂的业务场景,不太容易分析。 方法2:在客户端代码中,调用Redis的函数中,进行访问Key的记录,进而统计出热Key。 缺点:需要代码进行侵入式修改。 方法3:抓包分析 优点:简单易行 父主题: 大Key/热Key分析/过期Key扫描
  • 监控指标中存在已拒绝连接数是什么原因? 当监控指标中出现已拒绝连接数时,请确认客户端连接数是否已经超过实例的最大连接数限制,实例最大连接数可以查看参数maxclients。 查看最大连接数:单击实例名称,进入实例详情页面,选择“配置参数”页签,查看maxclients参数的值。(Proxy集群实例不支持maxclients参数,最大连接数请参考控制台实例创建页面中的实例规格。) 查看实际连接数:单击实例名称,进入实例详情页面,选择“性能监控”页签,找到“活跃的客户端数量”监控项查看。 如果客户端连接数已到达连接上限,可以根据需要调整maxclients参数,如果maxclients参数已经是最大可配连接数,仍不满足需求,则需要升级规格。 父主题: 监控告警
  • Redis执行大Key分析后内存使用率降低的原因 Redis执行大Key分析,只会查询占用空间过大的Key,并不会删除Key。如果Redis执行大Key分析后内存使用率降低,可能是因为原Redis中存在较多过期Key,因为过期Key的惰性删除机制,Key过期后如果未被访问和识别到,不会立即被删除从而积压,在实例进行大Key分析过程中,会遍历Redis实例中的所有Key,使实例中的过期Key被识别到过期,因而被删除。 过期Key的删除机制,以及如何手动执行过期Key或设置自动过期Key扫描的操作,请参考过期Key扫描。 父主题: 大Key/热Key分析/过期Key扫描
共100000条