华为云用户手册

  • Redis实例支持的逐出策略 在达到内存上限(maxmemory)时,Redis支持选择以下8种数据逐出策略: noeviction:在这种策略下,如果缓存达到了配置的上限,实例将不再处理客户端任何增加缓存数据的请求,比如写命令,实例直接返回错误给客户端。缓存达到上限后,实例只处理删除和少数几个例外请求。 allkeys-lru:根据LRU(Least recently used,最近最少使用)算法尝试回收最少使用的键,使得新添加的数据有空间存放。 volatile-lru:根据LRU(Least recently used,最近最少使用)算法尝试回收最少使用的键,但仅限于具有“expire”字段集的键,使得新添加的数据有空间存放。 allkeys-random:回收随机的键使得新添加的数据有空间存放。 volatile-random:回收随机的键使得新添加的数据有空间存放,但仅限于具有“expire”字段集的键。 volatile-ttl:回收具有“expire”字段集中的键,且优先回收存活时间(TTL)较短的键,使得新添加的数据有空间存放。 allkeys-lfu:从所有键中驱逐最不常用的键。 volatile-lfu:从具有“expire”字段集的所有键中驱逐最不常用的键。 当没有键满足回收前提条件时,数据逐出策略volatile-lru、volatile-random、volatile-ttl与noeviction策略相同,具体见上文noeviction介绍。 2020年7月之前创建的Redis实例,逐出策略默认为noeviction。2020年7月及之后创建的实例,逐出策略默认为volatile-lru。
  • Redis命令执行失败的可能原因 Redis命令执行失败,一般有以下可能原因: 命令拼写不正确 如下图所示,命令拼写有误,Redis实例返回“ERR unknown command”,删除key的正确命令为del。 在低版本Redis实例运行高版本命令 如下图所示,在Redis 3.0版本运行Redis 5.0新增的Stream相关命令,Redis实例返回命令出错信息。 D CS Redis不支持的部分命令。 出于安全原因,DCS禁用了部分命令,具体参考Redis命令的兼容性,查看禁用命令与受限使用命令。 在控制台提供的Web CLI界面执行命令失败。 Web CLI工具除了同样不支持上述列出的禁用命令与受限命令,对keys命令也有一定的使用限制。 执行lua脚本失败。 例如报错:ERR unknown command 'EVAL' ,说明您的Redis实例属早期创建的低版本Redis实例,不支持lua脚本,这种情况请提工单联系技术支持,升级您的Redis实例。 执行setname和getname失败。 说明您的Redis实例属早期创建的低版本Redis实例,不支持这两个命令,这种情况请提工单联系技术支持,升级您的Redis实例。 2018年7月10日前创建的Redis集群实例,以下命令被禁用,客户端执行时也会收到命令出错信息。如果需要支持,请提工单联系技术支持,升级集群实例。 SINTER、SDIFF、SUNION、PFCOUNT、PFMERGE、SINTERSTORE、SUNIONSTORE、SDIFFSTORE、SMOVE、BLPOP、BRPOP、BRPOPLPUSH、ZUNIONSTORE,、ZINTERSTORE、EVAL、EVALSHA、BITOP、RENAME、RENAMENX、RPOPLPUSH、MSETNX、SCRIPT LOAD、SCRIPT KILL、SCRIPT EXISTS、SCRIPT FLUSH。 父主题: Redis命令
  • 使用Jedis连接池报错如何处理? 在使用Jedis连接池JedisPool模式下,比较常见的报错如下: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool 首先确认DCS缓存实例是正常运行中状态,然后按以下步骤进行排查。 检查网络。 核对IP地址配置。 检查jedis客户端配置的IP地址是否与DCS缓存实例的连接地址或IP地址一致,如果是通过公网访问,则检查是否与DCS缓存实例绑定的弹性IP地址一致,不一致则修改一致后重试。 测试网络。 在客户端使用ping和Telnet小工具测试网络。 如果ping不通: VPC内访问时,要求客户端与DCS缓存实例的VPC相同,并且正确配置安全组或白名单。 公网SSL方式访问Redis 3.0时,要求DCS缓存实例安全组放开了36379端口访问。 公网直接访问Redis 3.0(非SSL方式)时,要求DCS缓存实例安全组放开了6379端口访问。 如果IP地址可以ping通,telnet对应的端口不通,则尝试重启实例,如重启后仍未恢复,请联系技术支持。 检查连接数是否超限。 查看已建立的网络连接数是否超过JedisPool配置的上限。如果连接数接近配置的上限值,则建议重启服务观察。如果明显没有接近,排除连接数超限可能。 Unix/Linux系统使用: netstat -an | grep 6379 | grep ESTABLISHED | wc -l Windows系统使用: netstat -an | find "6379" | find "ESTABLISHED" /C 检查JedisPool连接池代码。 如果连接数接近配置的上限,请分析是业务并发原因,或是没有正确使用JedisPool所致。 对于JedisPool连接池的操作,每次调用jedisPool.getResource()方法之后,需要调用jedisPool.returnResource()或者jedis.close()进行释放,优先使用close()方法。 检查客户端TIME_WAIT是否过多。 通过ss -s查看time wait链接是否过多。 如果TIME_WAIT过多,可以调整内核参数(/etc/sysctl.conf): ##当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击net.ipv4.tcp_syncookies = 1##允许将TIME-WAIT sockets重新用于新的TCP连接net.ipv4.tcp_tw_reuse = 1##开启TCP连接中TIME-WAIT sockets的快速回收net.ipv4.tcp_tw_recycle = 1##修改系统默认的TIMEOUT时间net.ipv4.tcp_fin_timeout = 30 调整后重启生效:/sbin/sysctl -p 如果按照以上原因排查之后问题仍没有解决,可以通过抓包并将异常时间点、异常信息以及抓包文件发送给技术支持协助分析。 抓包可使用tcpdump工具,命令如下: tcpdump -i eth0 tcp and port 6379 -n -nn -s 74 -w dump.pcap Windows系统下还可以安装Wireshark工具抓包。 公网访问Redis 3.0时请将端口改成36379。 网卡名请改成实际的网卡名称。 父主题: 客户端和网络连接
  • 查找并禁用高消耗命令 使用了keys等消耗资源的命令,高消耗资源的命令即时间复杂度为O(N)或更高的命令,通常情况下,命令时间复杂度越高,在执行时消耗的资源越高,这会导致CPU使用率超高,容易触发主备倒换。关于各命令对应的时间复杂度信息请参见Redis官网。例如,使用了keys等消耗资源的命令,导致CPU超高,建议客户改成scan命令或者禁用keys命令。 通过性能监控功能,确认CPU使用率高的具体时间段。 通过下述方法,找出高消耗的命令。 慢查询功能会记录执行超过指定时间阈值的命令,通过分析慢查询的语句和执行时长可帮助您找出高消耗命令,具体操参见慢查询。 通过实例诊断功能,选择CPU冲高的时间点进行诊断后,可以看到报告中的对应时间段命令的执行情况以及CPU耗时百分比,具体操作参见实例诊断。 处理措施。 评估并禁用高风险命令和高消耗命令,例如FLUSHALL、KEYS、HGETALL等。 优化业务,例如避免频繁执行数据排序操作。 可选:根据业务情况,选择下述方法对实例进行调整: 调整实例为读写分离实例,对高消耗命令或应用进行分流。 扩容实例增强实例处理能力。
  • 是否存在Redis的持久化重写操作 除单机及单副本Cluster集群实例外,华为云其他Redis实例默认开启AOF数据落盘,实例开启了AOF持久化功能后,会定期进行AofRewrite的磁盘整理,AOF磁盘持久化整理一般在以下2种场景执行: 数据量写入不大,AOF文件不大时,固定在每天的凌晨1-4点进行AOF持久化重写。所以容易出现这个时间点实例CPU使用率超高的现象。 数据量写入过大,AOF文件大小超过阈值(缓存实例容量的3-5倍)时,不论当前的所处的时间,会自动触发后台AOF持久化重写。 Redis的持久化重写操作(Bgsave或Bgrewriteaof)比较消耗CPU资源(请参考为什么使用Fork执行Bgsave和Bgrewriteaof),Bgsave和Bgrewriteaof会调用系统的Fork机制,造成CPU短暂时间冲高。 如果客户没有需要用到持久化功能,建议将该功能关闭(请根据实际业务慎重操作,关闭持久化功能会导致极端故障场景下恢复时,由于没有落盘造成的数据丢失)。关闭操作:在实例详情页面,选择“配置参数”页签,将“appendonly”修改为“no”。
  • 使用redis_exporter出错怎么办? 通过在命令行启动redis_exporter,根据界面输出,查看是否存在错误,根据错误描述,进行问题排查。 [root@ecs-swk /]./redis_exporter -redis.addr 192.168.0.23:6379INFO[0000] Redis Metrics Exporter V0.15.0 build date:2018-01-19-04:08:01 sha1: a0d9ec4704b4d35cd08544d395038f417716a03a Go:go1.9.2INFO[0000] Providing metrics at :9121/metricsINFO[0000] Connecting to redis hosts: []string{192.168.0.23:6379}INFO[0000] Using alias:[]string{""} 父主题: Redis使用
  • Redis命令执行不生效 如果客户端代码业务异常,怀疑是Redis命令不生效,可以通过Redis-cli执行命令和查看数据,判断Redis命令执行是否异常。 以下列举两个场景: 场景一:通过设置key值和查看key值,即可判断该命令是否生效。 Redis通过set命令写String类型数据,但是数据未变化,则可以使用Redis-cli命令访问Redis实例,执行如下命令: 场景二:通过expire命令设置过期事件,但是怀疑过期时间不对,则可以执行如下操作: 设置10秒过期时间,然后执行ttl命令查看过期时间,如下图表示,执行ttl命令时,过期时间剩下7秒。 Redis客户端和服务端通过二进制协议进行通信,使用Redis-cli、Jedis、Python客户端并没有差异。 因此如果怀疑Redis有问题,但是使用Redis-cli排查没问题,那就很可能是业务代码存在问题,如果日志没有明显错误信息,则建议在代码添加日志支撑进一步分析。 父主题: Redis命令
  • RDB支持存储LFU、LRU Redis 5.0开始,RDB快照文件中增加存储key逐出策略LRU和LFU: FIFO:先进先出。最早存储的数据,优先被淘汰。 LRU:最近最少使用。长期未使用的数据,优先被淘汰。 LFU:最不经常使用。在一段时间内,使用次数最少的数据,优先被淘汰。 Redis 5.0的RDB文件格式有变化,向下兼容。因此如果使用快照的方式迁移,可以从Redis低版本迁移到Redis 5.0,但不能从Redis 5.0迁移到低版本。
  • 内存使用优化 Redis 5.0在上一版本基础上,在内存使用上做了进一步优化。 主动碎片整理 当key被频繁修改,value长度不断变化时,Redis会为key分配新的内存空间。由于Redis追求高性能,实现了自己的内存分配器来管理内存,因此并不会将原有内存释放给OS,从而导致出现内存碎片。当used_memory_rss/used_memory高于1.5,一般认为内存碎片占比过高,内存利用率低。 因此,合理规划和使用缓存数据,规范数据写入,有助于减少内存碎片的产生。 Redis 3.0及以下:可以通过定期重启服务解决内存碎片问题。建议实际缓存数据不超过配置可用内存的50%。 Redis 4.0:支持主动整理内存碎片,服务在运行期间进行自动内存碎片清理。同时Redis 4.0支持通过memory purge命令手动清理内存碎片。 Redis 5.0:增强版主动碎片整理,配合Jemalloc版本更新,更快更智能,延时更低。 HyperLogLog算法优化 HyperLogLog是一种基数计数方法,使用少量的内存空间完成海量数据的计数统计,在Redis 5.0中,HyperLogLog算法得到改进,优化了计数统计时的内存使用效率。 举个例子:B树计数效率非常高,但是内存消耗也比较多。而HyperLogLog可节省大量存储空间。当B树需要1M内存统计,HyperLogLog只需要1kb。 内存信息统计报告能力增强 INFO命令返回信息更加详实。
  • Redis命令执行是否有超时时间?超时了会出现什么结果? Redis超时分为客户端超时和服务端超时。 客户端命令超时时间一般由客户端代码自行控制,业务侧需要根据自己的业务特点选择合适的超时时间(例如Java的Lettuce客户端,该参数名为timeout)。 客户端如果发生命令执行超时,根据不同客户端的逻辑控制,可能会发生超时报错、命令堵塞、客户端连接重试等情况。 Redis服务端Timeout默认配置为0,不会主动断开连接,如果需要修改配置,可以参考修改实例配置参数。 如果实例配置了该Timeout参数值(不为0),当客户端与服务端空闲连接超过该参数值时,连接会断开。 父主题: Redis命令
  • Stream数据结构 Stream是Redis 5.0引入的一种新数据类型,它是一个全新的支持多播的可持久化消息队列。 Redis Stream的结构示意图如图1所示,它是一个可持久化的数据结构,用一个消息链表,将所有加入进来的消息都串起来。 Stream数据结构具有以下特性: Stream中可以有多个消费者组。 每个消费组都含有一个Last_delivered_id,指向消费组当前已消费的最后一个元素(消息)。 每个消费组可以含有多个消费者对象,消费者共享消费组中的Last_delivered_id,相同消费组内的消费者存在竞争关系,即一个元素只能被其中一个消费者进行消费。 消费者对象内还维持了一个Pending_ids,Pending_ids记录已发送给客户端,但是还没完成ACK(消费确认)的元素id。 Stream与Redis其他数据结构的比较,见表1。 图1 Stream数据结构示意图 表1 Stream与Redis现有数据结构比较 比较项 Stream List、Pub/Sub、Zset 复杂度 获取元素高效,复杂度为O(logN) List获取元素的复杂度为O(N) offset 支持offset,每个消息元素有唯一id。不会因为新元素加入或者其他元素淘汰而改变id。 List没有offset概念,如果有元素被逐出,无法确定最新的元素 持久化 支持消息元素持久化,可以保存到AOF和RDB中。 Pub/Sub不支持持久化消息。 消费分组 支持消费分组 Pub/Sub不支持消费分组 消息确认 支持ACK(消费确认) Pub/Sub不支持 性能 Stream性能与消费者数量无明显关系 Pub/Sub性能与客户端数量正相关 逐出 允许按时间线逐出历史数据,支持block,给予radix tree和listpack,内存开销少。 Zset不能重复添加相同元素,不支持逐出和block,内存开销大。 删除元素 不能从中间删除消息元素。 Zset支持删除任意元素 Stream相关命令介绍 接下来按照使用流程中出现的顺序介绍Stream相关命令。详细命令见表2 首先使用XADD添加流元素,即创建Stream,添加流元素时可指定消息数量最大保存范围。 然后通过XGROUP创建消费者组。 消费者使用XREADGROUP指令进行消费。 客户端消费完毕后使用XACK命令确认消息已消费成功。 图2 Stream相关命令介绍 表2 Stream的详细命令 命令 说明 语法 XACK 从流的消费者组的待处理条目列表(简称PEL)中删除一条或多条消息。 XACK key group ID [ID ...] XADD 将指定的流条目追加到指定key的流中。 如果key不存在,作为运行这个命令的副作用,将使用流的条目自动创建key。 XADD key ID field string [field string ...] XCLAIM 在流的消费者组上下文中,此命令改变待处理消息的所有权, 因此新的所有者是在命令参数中指定的消费者。 XCLAIM key group consumer min-idle-time ID [ID ...] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID] XDEL 从指定流中移除指定的条目,并返回成功删除的条目的数量,在传递的ID不存在的情况下, 返回的数量可能与传递的ID数量不同。 XDEL key ID [ID ...] XGROUP 该命令用于管理流数据结构关联的消费者组。使用XGROUP你可以: 创建与流关联的新消费者组。 销毁一个消费者组。 从消费者组中移除指定的消费者。 将消费者组的最后交付ID设置为其他内容。 XGROUP [CREATE key groupname id-or-$] [SETID key id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername] XINFO 检索关于流和关联的消费者组的不同的信息。 XINFO [CONSUMERS key groupname] key key [HELP] XLEN 返回流中的条目数。如果指定的key不存在,则此命令返回0,就好像该流为空。 XLEN key XPENDING 通过消费者组从流中获取数据。检查待处理消息列表的接口,用于观察和了解消费者组中哪些客户端是活跃的,哪些消息在等待消费,或者查看是否有空闲的消息。 XPENDING key group [start end count] [consumer] XRANGE 返回流中满足给定ID范围的条目。 XRANGE key start end [COUNT count] XREAD 从一个或者多个流中读取数据,仅返回ID大于调用者报告的最后接收ID的条目。 XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] XREADGROUP XREAD命令的特殊版本,指定消费者组进行读取。 XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] XREVRANGE 与XRANGE相同,但显著的区别是以相反的顺序返回条目,并以相反的顺序获取开始-结束参数 XREVRANGE key end start [COUNT count] XTRIM XTRIM将流裁剪为指定数量的项目,如有需要,将驱逐旧的项目(ID较小的项目)。 XTRIM key MAXLEN [~] count 消息(流元素)消费确认 Stream与相比Pub/Sub,不仅增加消费分组模式,还支持消息消费确认。 当一条消息被某个消费者调用XREADGROUP命令读取或调用XCLAIM命令接管的时候, 服务器尚不确定它是否至少被处理了一次。 因此,一旦消费者成功处理完一条消息,它应该调用XACK知会Stream,这样这个消息就不会被再次处理, 同时关于此消息的PEL(pending_ids)条目也会被清除,从Redis服务器释放内存。 某些情况下,因为网络问题等,客户端消费完毕后没有调用XACK,这时候PEL内会保留对应的元素ID。待客户端重新连上后,XREADGROUP的起始消息ID建议设置为0-0,表示读取所有的PEL消息及自last_id之后的消息。同时,消费者消费消息时需要能够支持消息重复传递。 图3 ACK机制解读
  • DCS是否支持哨兵模式接入? Redis 4.0及以上版本: 单机、主备、Cluster集群实例不支持哨兵模式接入。 读写分离支持哨兵模式和集群模式接入。 Proxy集群实例默认支持集群模式接入,开启cluster-sentinel-enabled参数后,支持哨兵模式接入。开启cluster-sentinel-enabled参数(配置为yes)的操作,请参考修改DCS实例配置参数。 Redis 3.0实例不支持哨兵模式接入。 父主题: 安全性
  • 实例无法删除是什么原因? 可能原因如下: 实例资源为包周期实例。 包周期的实例不支持删除操作,界面没有“删除”按钮,用户需要执行“退订”操作,退订实例资源。 实例状态不是“运行中”。 只有当实例处于“运行中”状态,才能执行删除操作。 确认实例是否为创建失败的实例。 单击缓存实例列表上方“创建失败的实例”后的图标或者数量,如果是创建失败的实例,会显示在弹出的“创建失败的实例”窗口中,请从该界面中进行删除。 父主题: Redis使用
  • 本地环境是否可以连接缓存实例? 未开启公网访问的DCS缓存实例,本地环境不能直接连接DCS缓存实例。云服务采用虚拟私有云(VPC)管理各服务的网络安全,用户创建的DCS缓存实例,只允许被与实例网络互通的虚拟私有云的弹性云服务器访问。 用户可以通过网络代理转发的方式,用一台能与DCS缓存实例网络互通的弹性云服务器(ECS)做中转,实现本地环境连接DCS缓存实例。具体操作参考使用SSH隧道代理机制实现公网访问DCS实例。 已开启公网访问的缓存实例,可以通过本地环境连接DCS缓存实例。 父主题: 客户端和网络连接
  • Redis的安全加固方面有哪些建议? 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,但是原生Redis版本在安全方面非常薄弱,很多地方不满足安全要求,如果暴露在公网上,极易受到恶意攻击,导致数据泄露和丢失。 针对DCS的Redis实例,您在使用过程中,可参考如下建议: 网络连接配置 敏感 数据加密 后存储在Redis实例,且实例不开启公网访问。 对于敏感数据,尽量加密后存储。如无特殊需要,尽量不使用公网访问。 对安全组设置有限的、必须的允许访问规则。 安全组与VPC均是用于网络安全访问控制的配置,以端口最少放开原则配置安全组规则,降低网络入侵风险。 客户端应用所在ECS设置防火墙。 客户端应用所在的服务器建议配置防火墙过滤规则。 设置实例访问密码。 配置实例白名单。 Redis-cli使用 隐藏密码 安全问题:通过在redis-cli指定-a参数,密码会被ps出来,属于敏感信息。 解决方案:修改Redis源码,在main方法进入后,立即隐藏掉密码,避免被ps出来。 禁用脚本通过sudo方式执行 安全问题: redis-cli访问参数带密码敏感信息,会被ps出来,也容易被系统记录操作日志。 解决方案:改为通过API方式(Python可以使用redis-py)来安全访问,禁止通过sudo方式切换到dbuser账号使用redis-cli。 父主题: 安全性
  • Redis 3.0 Proxy集群不支持redisson分布式锁的原因 redisson分布式锁的加锁和解锁流程如下: redisson分布式锁的加锁和解锁都是执行一段lua脚本功能实现的。 在加锁阶段,需要在lua脚本中执行exists、hset、pexpire、hexists、hincrby、pexpire、pttl命令。 在解锁阶段,需要在lua脚本中执行exists、publish、hexists、pexpire、del命令。 由于Proxy集群支持publish/subscribe(redis的发布订阅)时,是需要在Proxy节点上识别publish/subscribe命令,做一些特殊处理(转发给所有redis-server的节点),因此不支持直接在lua脚本中执行publish命令。 因此,Redis 3.0 Proxy集群无法支持redisson的分布式锁机制,如果需要使用redisson分布式锁功能,建议使用Redis 4.0或Redis 5.0集群。 父主题: Redis使用
  • DCS实例的CPU规格是怎么样的 Redis基础版: 使用DCS Redis基础版实例的用户无需关心CPU规格的指标,仅需关心QPS,带宽,内存大小等核心指标。 Redis基础版的实例基于开源Redis构造,开源Redis使用单个主线程处理命令,只能利用一个核的CPU,因此,只需认为单个Redis节点仅使用1核CPU即可。提升基础版Redis实例的内存大小,CPU规格不变。 Redis基础版由于社区版单线程处理模型的限制,如需增加实例CPU处理性能,请使用集群类型的Redis实例,通过增加分片的方式,来增加整个集群的处理性能。集群实例每个节点默认分配1核CPU进行处理。 Redis企业版: DCS Redis企业版为多线程版本,企业版Redis线程数请参考表1。企业版Redis的CPU最大使用率=线程数x100%,例如线程数为3的企业版Redis,最大CPU使用率为300%。 表1 企业版Redis线程数 实例内存规格 线程数(企业版高性能型主备实例) 线程数(企业版存储型主备实例) 8 GB 3 3 16 GB 4 6 32 GB 4 7 64 GB 4 - 父主题: 实例特性
  • DCS缓存实例的数据被删除后,能否找回? 如果DCS缓存实例执行了备份操作,实例的数据被删除后,可通过备份文件对数据进行恢复,但是恢复会覆盖备份时间到恢复这段时间的写入数据。 主备、集群和读写分离实例通过控制台的“备份与恢复”功能将已备份的数据恢复到DCS缓存实例中,参考实例恢复。 另外,如果DCS缓存实例被删除,实例中原有的数据将被删除,实例的备份数据也会删除,请谨慎操作。在删除实例之前,您可以将实例的备份文件下载,本地永久保存,如需恢复数据,可将本地备份文件迁移到新的实例中。下载备份数据的方式,请参考如何导出Redis实例数据?。 父主题: Redis使用
  • Redis实例是否支持版本升级,如Redis 4.0升级到Redis 5.0? 暂不支持直接升级。Redis不同版本的底层架构不一样,在创建Redis实例时,确定Redis版本后,不能修改,如Redis 4.0的实例不能升级到Redis 5.0。 如您的业务需要使用Redis高版本的功能特性,可重新创建高版本Redis实例,然后将原有Redis实例的数据迁移到高版本实例上。具体数据迁移操作,可参考迁移方案说明。 父主题: 扩容缩容与实例升级
  • Redis实例创建失败的可能原因 子网IP不足 分析:单机实例需要绑定1个子网IP地址,主备实例需要绑定2个子网IP地址,集群实例有多个节点,需要绑定多个IP地址。 解决方案:如果所选子网IP资源不足,可以更换子网创建实例或者释放当前子网下其他IP地址。 IAM 用户(子用户)没有创建权限 分析:用户所属组需要拥有“DCS FullAccess”策略或“DCS Administrator”角色或者拥有创建DCS实例的权限。 解决方案:使用管理员用户创建DCS实例。 父主题: 创建实例和权限
  • Memcached实例支持公网访问么? Memcached实例暂不支持公网访问。 未开启公网访问的DCS缓存实例,本地环境不能直接连接DCS缓存实例。DCS采用虚拟私有云(VPC)管理各服务的网络安全,用户创建的DCS缓存实例,必须通过与DCS缓存实例相同虚拟私有云(VPC)的弹性云服务器(ECS)来访问。 如果您在应用开发调试阶段,可以通过网络代理转发的方式,用一台能与DCS缓存实例网络互通的弹性云服务器(ECS)做中转,实现本地环境连接DCS缓存实例。具体操作参考使用SSH隧道代理机制实现公网访问DCS实例。 父主题: Memcached使用
  • 查看Redis实例实时并发连接数 当您需要查看DCS实例收到的实时连接数时,在控制台缓存管理页面,单击需要查看的实例右侧的“查看监控”,进入 云监控 页面。 图1 查看监控 进入监控页面后,找到“活跃的客户端数量”监控项。您可以单击该监控项的右上角的查看按钮,使用大图模式查看。 在弹出的“活跃的客户端数量”页面,根据需要选择查看的时间段,例如,需要查看10分钟内的连接数,您可以将时间自定义为10分钟。由于监控数据采集的是周期内增加的连接数,您可以通过监控图表,查看这个时间段的连接数的走势,并统计10分钟内的连接总数。 监控指标“活跃的客户端数量”用于统计已连接的客户端数量,包括系统监控、配置同步和业务相关的连接数,不包括来自从节点的连接。 您还可以通过控制台会话管理,查看连接实例的客户端会话信息。
  • 创建Memcached实例时如何选择可用区? 简单来说,只要是在同一区域(Region)内,选择任意一个可用区内DCS的Memcached都没有功能上的本质区别。 一般来讲,同一可用区比跨可用区的网络时延更有优势,但是跨可用区从容灾的角度比同可用区更有优势。当应用内部需要更低的网络时延,可以将应用实例组部署在同一个可用区中。 DCS的Memcached目前已支持跨可用区部署,在管理控制台创建DCS的Memcached时进行配置。只要与您的ECS在同一个区域(Region)内,无论选择创建哪个可用区的Memcached都可以实现与ECS正常的连通使用。若您希望获得更低的网络时延,请根据您ECS的可用区选择创建对应可用区的Memcached。 例如,您有一台华南-广州的ECS,其属于华南-广州可用区B,那么当您在创建DCS的Memcached时,选择华南-广州任何一个可用区的实例都是可以正常使用的。您选择华南-广州可用区B的实例可以获得与这台ECS更低的网络时延。 注意:由于资源库存因素,可能出现您在创建DCS的Memcached时仅有一个可用区资源供选择的情况,这不会影响您的正常使用。 父主题: Memcached使用
  • 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
  • 解决方案 添加一段代码,指定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()); }}
  • Memcached如何迁移? 由于Memcached本身没有命令可遍历查询所有数据,因此无法从正在使用的Memcached中直接导出数据、并迁移到云缓存Memcached实例。 建议通过应用程序写日志的方式记录缓存key、同时提取key-value,写入云缓存Memcached,以逐步完成数据的迁移。 部分开源工具能够利用Memcached的stats cachedump命令结合get操作查询出Memcached中的部分key-value,但由于stats cachedump命令限制最多只能查出不超过2MB的key(查询出的key总长度和不超过2MB,且该长度限制包含每个key 20余字节的辅助信息),因此也不能通过此类工具或类似方法执行数据迁移。 父主题: 数据备份/导出/迁移
  • 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,因为只使用第一个“{”和“}”。
  • Redis主备节点的数据如何同步? 一般情况下,Redis主节点数据更新后会自动复制到关联的备节点。但由于Redis异步复制的技术,特殊情况下,备节点更新可能会落后于主节点。例如,当主节点的I/O写入速度超过了备节点的同步速度,或者因异常原因导致主节点和备节点数据同步网络延迟,使得备节点与主节点存在滞后或者部分数据不一致,若此时进行主备切换,未及时完成同步的少量数据可能会丢失。 父主题: 主备倒换
  • 步骤二:登录OrgID 成员访问OrgID。 输入管理式华为账号的账号名和密码。管理式华为账号登录仅支持输入账号名(xxxx@ 域名 ),首次登录需修改密码。 单击“登录”。成功登录后,根据账号的权限不同,界面的呈现和可执行的操作不同,具体如下: 组织管理员:登录后显示用户中心,可切换至组织的管理中心,除不能进行创建组织和解散组织的操作外,其余权限与组织创建者一致。 部门管理员:登录后显示用户中心,可切换至组织的管理中心,拥有查看组织信息、管理成员部门、管理应用的操作权限。 普通用户:登录后只能访问组织的用户中心,具体请参见用户中心介绍。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全