云服务器内容精选

  • 更多操作 关闭审计日志 如需关闭审计日志功能,单击审计日志页面右上角的“关闭审计日志”,关闭后不再记录命令。 关闭审计日志后,若还有部分日志未上报完毕,这部分日志会继续上报完。 关闭审计日志后,在LTS侧的日志组和日志流资源不会删除,该资源本身不产生费用。 如果需要删除日志组和日志流,请到LTS控制台手动操作,参考删除日志组、删除日志流。 修改日志存储时间 在LTS控制台的日志组列表页面,单击对应日志组操作列的“修改”,修改日志存储时间。 图2 修改日志存储时间或删除日志组
  • 约束与限制 开启审计日志需要用户账号拥有LTS服务创建日志组和日志流的权限。 新创建的缓存实例,请在实例创建成功10分钟后,再开启审计日志,否则可能会操作失败。 实例扩容、缩容以及节点迁移的场景下,审计日志会自动关闭。再次使用需重新开启。 审计日志默认只记录写操作命令。 如果需要记录读命令,可以在配置参数中额外增加要记录的自定义命令。请参考修改单实例配置参数,将自定义命令配置到audit-log-customer-command-list参数项。 D CS 的审计日志默认存储时间为一天,开启审计日志后,可以在LTS控制台修改日志组的存储天数。参考修改日志存储时间。
  • 约束与限制 企业版Redis暂不支持调整带宽。 只有在运行中的实例支持调整带宽,如果是变更中、故障中、重启中等其他状态下的实例不支持调整实例带宽。 带宽的调整范围在实例基准带宽到最大可调整的带宽之间,通常在实例节点所在物理机带宽资源充足的前提下,实例可调整的单分片最大带宽为2048 Mbit/s。 实例带宽与单分片带宽的关系如下: 单机/主备实例带宽=单分片带宽。 读写分离实例带宽=单分片带宽 * 副本数。 集群实例带宽=单分片带宽 * 分片数,当各分片带宽值不同时,集群实例带宽值为各个分片带宽值之和。
  • 调整DCS实例带宽 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”。 在“缓存管理”页面,单击DCS缓存实例的名称。 在缓存实例的“基本信息”栏中单击带宽后的“调整带宽”。 图1 调整带宽 在弹出的“调整带宽”页面,设置需要调整的带宽值,单击“下一步”。 集群实例多分片需要同时调整带宽时,可以同时勾选多个分片后,单击页面左上角的“批量调整带宽”,统一设置带宽值。 目标带宽值只支持设置为8的整数倍,并且在可设置的范围内。如果设置的带宽值不是8的整数倍,订单提交后会自动按照向下取整的方式调整带宽。例如输入的带宽值为801,则按照800 Mbit/s的目标带宽调整带宽。 变更页面显示的变更后费用为该实例额外购买的带宽计费金额,不包含原实例费用。 调整带宽的计费方式仅支持按需计费。 您可以根据需要多次调整带宽,单个计费周期(1小时)中如果有多次带宽变更,该计费周期以最大带宽费用收费。例如将一个Redis实例(默认带宽值为256 Mbit/s)的宽带变更为2048 Mbit/s后,在一个计费周期内再次将带宽值变更为512 Mbit/s,实例在该计费周期将按照2048 Mbit/s的带宽值扣费。 确认新的带宽值及带宽费用,在“带宽调整确认”处勾选确认后,单击“提交订单”。 调整带宽任务的状态为“成功”后,新的带宽值立即生效。
  • 查看参数模板信息 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“参数模板”。 在“参数模板”页面,选择“系统默认”或者“自定义”。 查询参数模板。 当前支持通过模板名称搜索对应的参数模板,直接在搜索栏输入关键字即可。 在需要查看的参数模板左侧,单击该模板名称,进入模板的参数页面。各参数的详细介绍见表1。 表1 Redis缓存实例配置参数说明 参数名 参数解释 例外场景 取值范围 默认值 active-expire-num 定期删除过期键时随机检查key的数量。 Redis 3.0和Redis 6.0企业版实例不支持该参数。 说明: 该参数为2021年9月新增,在此之前创建的实例,如果无法正常修改参数值,请联系技术支持处理。 1~1,000 20 timeout 客户端空闲N秒(timeout参数的取值)后将断开连接。参数值为0表示禁用该功能,即客户端空闲不会断开连接。 - 0~7200 单位:秒 0 appendfsync 操作系统的fsync函数刷新缓冲区数据到磁盘,有些操作系统会真正刷新磁盘上的数据,其他一些操作系统只会尝试尽快完成。 单机实例不支持该参数。 no:不调用fsync,由操作系统决定何时刷新数据到磁盘,性能最高。 always:每次写AOF文件都调用fsync,性能最差,但数据最安全。 everysec:每秒调用一次fsync。兼具数据安全和性能。 no appendonly 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 单机实例不支持该参数。 yes:开启日志记录,即开启持久化功能。 no:关闭日志记录,即关闭持久化功能。 only-replica:仅开启从节点持久化功能。 说明: 目前appendonly参数默认只有yes和no两个配置项,如果是Redis 4.0/5.0/6.0基础版主备或集群实例,或企业版高性能型主备实例,联系运维人员放通该参数的白名单后,会显示only-replica配置项。 yes client-output-buffer-limit-slave-soft-seconds 主从同步缓冲区大小超过client-output-buffer-slave-soft-limit主从同步缓冲区大小软限制,并持续时间超过此参数值时,服务端会主动断开连接。 - 0~60 单位:秒 60 client-output-buffer-slave-hard-limit 主从同步缓冲区大小硬限制。如果同步缓冲区大小超过这个值,则主从同步连接立即断开。 - 0~17,179,869,184 单位:字节 1,717,986,918 client-output-buffer-slave-soft-limit 主从同步缓冲区大小软限制。如果同步缓冲区大小超过这个值,并持续时间达到client-output-buffer-limit-slave-soft-seconds参数配置的秒数,则主从同步连接断开。 - 0~17,179,869,184 单位:字节 1,717,986,918 maxmemory-policy 内存使用达到上限(maxmemory)时,对缓存数据的逐出策略,有8个取值供选择。 - volatile-lru:根据LRU算法删除设置了过期时间的键值。 allkeys-lru:根据LRU算法删除任一键值。 volatile-random:删除设置了过期时间的随机键值。 allkeys-random:删除一个随机键值。 volatile-ttl:删除即将过期的键值,即TTL值最小的键值。 noeviction:不删除任何键值,只是返回一个写错误。 volatile-lfu: 根据LFU算法删除设置了过期时间的键值。 allkeys-lfu: 根据LFU算法删除任一键值。 详情可参考Redis官网的逐出策略。 volatile-lru 说明: 如果是2020年7月之前创建的Redis实例,且没有修改过该参数,则默认值为noeviction。如果是2020年7月之后创建的实例,默认值都为volatile-lru。 lua-time-limit Lua脚本的最长执行时间。 - 100~5,000 单位:毫秒 5,000 master-read-only 设置实例为只读状态。设置只读后,所有写入命令将返回失败。 Proxy集群实例不支持该参数。 yes no no maxclients 最大同时连接的客户端个数。 该参数为单节点(单分片)连接数上限: 集群实例单节点连接数上限=实例连接数上限/分片数。 单机/主备实例,单节点连接数上限=实例最大连接数。 读写分离实例暂不支持该参数。 1,000~50,000 10,000 proto-max-bulk-len Redis协议中的最大的请求大小。 - 1,048,576~536,870,912 单位:字节 536,870,912 repl-backlog-size 用于增量同步的复制积压缓冲区大小。这是一个用来在从节点断开连接时,存放从节点数据的缓冲区,当从节点重新连接时,如果丢失的数据少于缓冲区的大小,可以用缓冲区中的数据开始增量同步。 - 16,384~1,073,741,824 单位:字节 1,048,576 repl-backlog-ttl 从节点断开后,主节点释放复制积压缓冲区内存的秒数。值为0时表示永不释放复制积压缓冲区内存。 - 0~604,800 单位:秒 3,600 repl-timeout 主从同步超时时间。 单机实例不支持该参数。 30~3,600 单位:秒 60 hash-max-ziplist-entries 当hash表中记录数少于参数值,使用ziplist编码格式,节约内存。 - 1~10000 512 hash-max-ziplist-value 当hash表中各字段长度的最大值小于参数值时,使用ziplist编码格式,节约内存。 - 1~10000 64 set-max-intset-entries 当一个集合仅包含字符串且整型元素数量少于参数值时,使用intset编码格式,节约内存。 - 1~10000 512 zset-max-ziplist-entries 当有序集合中记录数少于参数值,使用ziplist编码格式,节约内存。 - 1~10000 128 zset-max-ziplist-value 当有序集合中各字段长度的最大值小于参数值时,使用ziplist编码格式,节约内存。 - 1~10000 64 latency-monitor-threshold 延时监控的采样时间阈值(最小值)。 当阈值设置为0时,不做监控,也不采样;当阈值设置为大于0时,将监控并记录执行耗时大于阈值的操作。 您可以通过LATENCY等命令获取统计数据和配置、执行采样监控。 说明: latency-monitor-threshold参数一般在定位问题时使用。采集完latency信息,定位问题后,建议重新将latency-monitor-threshold设置为0,以免引起不必要的延迟。 Proxy集群实例不支持该参数。 0~86400000 单位:毫秒 0 notify-keyspace-events 键空间通知,配置该参数后客户端可以通过Redis的订阅与发布功能,来接收那些以某种方式改动了Redis数据集的事件。该参数配置为空时,功能关闭。当参数不是空字符串时,功能开启。 Proxy集群实例不支持该参数。 可配置为以下字符的任意组合,指定了服务器该发送哪些类型的通知: K:键空间通知,所有通知以__keyspace@__为前缀。 E:键事件通知,所有通知以__keyevent@__为前缀。 g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知。 $:字符串命令的通知。 l:列表命令的通知。 s:集合命令的通知。 h:哈希命令的通知。 z:有序集合命令的通知。 x:过期事件:每当有过期键被删除时发送。 e:驱逐(evict)事件:每当有键因为maxmemory政策而被删除时发送。 A:参数g$lshzxe的别名。 输入的参数中至少有一个K或者E,A不能与g$lshzxe同时出现,不能出现相同字母。例如,如果只想订阅键空间中和列表相关的通知,那么参数就应该设为Kl。将参数设为字符串"AKE"表示发送所有类型的通知。 Ex slowlog-log-slower-than Redis慢查询会记录超过指定执行时间的命令。slowlog-log-slower-than用于配置记录到redis慢查询命令执行时间阈值。 - 0~1,000,000 单位:微秒 10,000 proxy-slowlog-log-slower-than Proxy节点慢查询会记录超过指定执行时间的命令。proxy-slowlog-log-slower-than用于配置记录到proxy节点慢查询命令的执行时间阈值。 目前仅“华东-上海二”和“华南-广州”区域的Proxy集群和读写分离实例支持该参数。 30,000~2,000,000 单位:微秒 256,000 slowlog-max-len Redis慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOW LOG RESET命令清除慢查询记录。 - 0~1,000 128 proxy-slowlog-max-len Proxy节点慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 目前仅“华东-上海二”和“华南-广州”区域的Proxy集群和读写分离实例支持该参数。 0~1,000 128 auto-kill-timeout-lua-process 开启该参数时,执行超时的lua脚本进程会被自动kill。如果lua脚本执行了写操作无法kill,并且实例开启了持久化时,则该lua脚本所在的节点会自动重启,lua脚本执行的写操作将不被保存。 单机实例和Redis 3.0实例不支持该参数。 yes:开启 no:关闭 no audit-log-customer-command-list 审计日志需要额外记录的命令。审计日志默认只记录写命令,该参数可以指定用户额外需要记录的命令。只有在开启了审计日志的情况下才有效。 审计日志目前为白名单特性,只有开启了审计日志白名单的用户,并且仅当实例类型为Proxy集群实例时,才显示该参数。 该参数配置的值必须由英文字母或与.-_组成的命令,且必须以英文字母开头和结尾,每个命令最大长度为10,最多支持配置10个命令。命令之间用空格隔开, 配置的内容最后必须以空格结尾。 - dispatch-pubsub-to-fixed-shard 该参数用于指定发布订阅的channel是否集中在0号槽位对应的分片上。开启开关时,发布订阅的处理逻辑与单机版一致。用户轻度使用发布订阅时,推荐开启开关。用户重度使用发布订阅功能时,请使用默认配置,让订阅分担到全部分片中。 仅Proxy集群实例支持该参数。 yes:开启开关。订阅的channel都集中在0号槽位对应的集群分片上。 no:关闭开关。根据订阅channel值计算出hash槽位值,再将channel分散到各个槽位对应的分片中。 no readonly-lua-route-to-slave-enabled 是否把只读账号的只读lua路由到从节点,如果开启,只读账号的只读lua可以执行,且会路由到从节点。 仅读写分离实例支持该参数。 yes:开启 no:关闭 no cluster-sentinel-enabled 实例兼容哨兵(Sentinel)模式。 仅Proxy集群和读写分离实例支持该参数。 yes:开启 no:关闭 no scan-support-wr-split 该参数关闭时,scan命令在master节点执行,该参数开启后,scan命令将在slave节点执行。 仅Proxy集群实例支持该参数。 如果历史创建的Proxy集群实例不支持该参数,请联系技术支持升级实例版本。 yes:开启 no:关闭 no maxclients、reserved-memory-percent、client-output-buffer-slave-soft-limit、client-output-buffer-slave-hard-limit参数的默认值和取值范围与实例规格有关,因此参数模板不显示该四个参数。 表1中的内存优化相关参数可以参考Redis官网说明,链接:https://redis.io/topics/memory-optimization。
  • 缓存实例配置参数说明 表1中的内存优化相关参数可以参考Redis官网说明,链接:https://redis.io/topics/memory-optimization。 不同实例类型和版本支持配置的参数和取值可能略有不同,控制台参数配置页面中未显示的参数不支持修改。 表1 Redis缓存实例配置参数说明 参数名 参数解释 例外场景 取值范围 默认值 active-expire-num 定期删除过期键时随机检查key的数量。 Redis 3.0和Redis 6.0企业版实例不支持该参数。 说明: 该参数为2021年9月新增,在此之前创建的实例,如果无法正常修改参数值,请联系技术支持处理。 1~1,000 20 timeout 客户端空闲N秒(timeout参数的取值)后将断开连接。参数值为0表示禁用该功能,即客户端空闲不会断开连接。 - 0~7200 单位:秒 0 appendfsync 操作系统的fsync函数刷新缓冲区数据到磁盘,有些操作系统会真正刷新磁盘上的数据,其他一些操作系统只会尝试尽快完成。 单机实例不支持该参数。 no:不调用fsync,由操作系统决定何时刷新数据到磁盘,性能最高。 always:每次写AOF文件都调用fsync,性能最差,但数据最安全。 everysec:每秒调用一次fsync。兼具数据安全和性能。 no appendonly 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 单机实例不支持该参数。 yes:开启日志记录,即开启持久化功能。 no:关闭日志记录,即关闭持久化功能。 only-replica:仅开启从节点持久化功能。 说明: 目前appendonly参数默认只有yes和no两个配置项,如果是Redis 4.0/5.0/6.0基础版主备或集群实例,或企业版高性能型主备实例,联系运维人员放通该参数的白名单后,会显示only-replica配置项。 yes client-output-buffer-limit-slave-soft-seconds 主从同步缓冲区大小超过client-output-buffer-slave-soft-limit主从同步缓冲区大小软限制,并持续时间超过此参数值时,服务端会主动断开连接。 - 0~60 单位:秒 60 client-output-buffer-slave-hard-limit 主从同步缓冲区大小硬限制。如果同步缓冲区大小超过这个值,则主从同步连接立即断开。 - 0~17,179,869,184 单位:字节 1,717,986,918 client-output-buffer-slave-soft-limit 主从同步缓冲区大小软限制。如果同步缓冲区大小超过这个值,并持续时间达到client-output-buffer-limit-slave-soft-seconds参数配置的秒数,则主从同步连接断开。 - 0~17,179,869,184 单位:字节 1,717,986,918 maxmemory-policy 内存使用达到上限(maxmemory)时,对缓存数据的逐出策略,有8个取值供选择。 - volatile-lru:根据LRU算法删除设置了过期时间的键值。 allkeys-lru:根据LRU算法删除任一键值。 volatile-random:删除设置了过期时间的随机键值。 allkeys-random:删除一个随机键值。 volatile-ttl:删除即将过期的键值,即TTL值最小的键值。 noeviction:不删除任何键值,只是返回一个写错误。 volatile-lfu: 根据LFU算法删除设置了过期时间的键值。 allkeys-lfu: 根据LFU算法删除任一键值。 详情可参考Redis官网的逐出策略。 volatile-lru 说明: 如果是2020年7月之前创建的Redis实例,且没有修改过该参数,则默认值为noeviction。如果是2020年7月之后创建的实例,默认值都为volatile-lru。 lua-time-limit Lua脚本的最长执行时间。 - 100~5,000 单位:毫秒 5,000 master-read-only 设置实例为只读状态。设置只读后,所有写入命令将返回失败。 Proxy集群实例不支持该参数。 yes no no maxclients 最大同时连接的客户端个数。 该参数为单节点(单分片)连接数上限: 集群实例单节点连接数上限=实例连接数上限/分片数。 单机/主备实例,单节点连接数上限=实例最大连接数。 读写分离实例暂不支持该参数。 1,000~50,000 10,000 proto-max-bulk-len Redis协议中的最大的请求大小。 - 1,048,576~536,870,912 单位:字节 536,870,912 repl-backlog-size 用于增量同步的复制积压缓冲区大小。这是一个用来在从节点断开连接时,存放从节点数据的缓冲区,当从节点重新连接时,如果丢失的数据少于缓冲区的大小,可以用缓冲区中的数据开始增量同步。 - 16,384~1,073,741,824 单位:字节 1,048,576 repl-backlog-ttl 从节点断开后,主节点释放复制积压缓冲区内存的秒数。值为0时表示永不释放复制积压缓冲区内存。 - 0~604,800 单位:秒 3,600 repl-timeout 主从同步超时时间。 单机实例不支持该参数。 30~3,600 单位:秒 60 hash-max-ziplist-entries 当hash表中记录数少于参数值,使用ziplist编码格式,节约内存。 - 1~10000 512 hash-max-ziplist-value 当hash表中各字段长度的最大值小于参数值时,使用ziplist编码格式,节约内存。 - 1~10000 64 set-max-intset-entries 当一个集合仅包含字符串且整型元素数量少于参数值时,使用intset编码格式,节约内存。 - 1~10000 512 zset-max-ziplist-entries 当有序集合中记录数少于参数值,使用ziplist编码格式,节约内存。 - 1~10000 128 zset-max-ziplist-value 当有序集合中各字段长度的最大值小于参数值时,使用ziplist编码格式,节约内存。 - 1~10000 64 latency-monitor-threshold 延时监控的采样时间阈值(最小值)。 当阈值设置为0时,不做监控,也不采样;当阈值设置为大于0时,将监控并记录执行耗时大于阈值的操作。 您可以通过LATENCY等命令获取统计数据和配置、执行采样监控。 说明: latency-monitor-threshold参数一般在定位问题时使用。采集完latency信息,定位问题后,建议重新将latency-monitor-threshold设置为0,以免引起不必要的延迟。 Proxy集群实例不支持该参数。 0~86400000 单位:毫秒 0 notify-keyspace-events 键空间通知,配置该参数后客户端可以通过Redis的订阅与发布功能,来接收那些以某种方式改动了Redis数据集的事件。该参数配置为空时,功能关闭。当参数不是空字符串时,功能开启。 Proxy集群实例不支持该参数。 可配置为以下字符的任意组合,指定了服务器该发送哪些类型的通知: K:键空间通知,所有通知以__keyspace@__为前缀。 E:键事件通知,所有通知以__keyevent@__为前缀。 g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知。 $:字符串命令的通知。 l:列表命令的通知。 s:集合命令的通知。 h:哈希命令的通知。 z:有序集合命令的通知。 x:过期事件:每当有过期键被删除时发送。 e:驱逐(evict)事件:每当有键因为maxmemory政策而被删除时发送。 A:参数g$lshzxe的别名。 输入的参数中至少有一个K或者E,A不能与g$lshzxe同时出现,不能出现相同字母。例如,如果只想订阅键空间中和列表相关的通知,那么参数就应该设为Kl。将参数设为字符串"AKE"表示发送所有类型的通知。 Ex slowlog-log-slower-than Redis慢查询会记录超过指定执行时间的命令。slowlog-log-slower-than用于配置记录到redis慢查询命令执行时间阈值。 - 0~1,000,000 单位:微秒 10,000 proxy-slowlog-log-slower-than Proxy节点慢查询会记录超过指定执行时间的命令。proxy-slowlog-log-slower-than用于配置记录到proxy节点慢查询命令的执行时间阈值。 目前仅“华东-上海二”和“华南-广州”区域的Proxy集群和读写分离实例支持该参数。 30,000~2,000,000 单位:微秒 256,000 slowlog-max-len Redis慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 - 0~1,000 128 proxy-slowlog-max-len Proxy节点慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 目前仅“华东-上海二”和“华南-广州”区域的Proxy集群和读写分离实例支持该参数。 0~1,000 128 auto-kill-timeout-lua-process 开启该参数时,执行超时的lua脚本进程会被自动kill。如果lua脚本执行了写操作无法kill,并且实例开启了持久化时,则该lua脚本所在的节点会自动重启,lua脚本执行的写操作将不被保存。 单机实例和Redis 3.0实例不支持该参数。 yes:开启 no:关闭 no audit-log-customer-command-list 审计日志需要额外记录的命令。审计日志默认只记录写命令,该参数可以指定用户额外需要记录的命令。只有在开启了审计日志的情况下才有效。 审计日志目前为白名单特性,只有开启了审计日志白名单的用户,并且仅当实例类型为Proxy集群实例时,才显示该参数。 该参数配置的值必须由英文字母或与.-_组成的命令,且必须以英文字母开头和结尾,每个命令最大长度为10,最多支持配置10个命令。命令之间用空格隔开, 配置的内容最后必须以空格结尾。 - dispatch-pubsub-to-fixed-shard 该参数用于指定发布订阅的channel是否集中在0号槽位对应的分片上。开启开关时,发布订阅的处理逻辑与单机版一致。用户轻度使用发布订阅时,推荐开启开关。用户重度使用发布订阅功能时,请使用默认配置,让订阅分担到全部分片中。 仅Proxy集群实例支持该参数。 yes:开启开关。订阅的channel都集中在0号槽位对应的集群分片上。 no:关闭开关。根据订阅channel值计算出hash槽位值,再将channel分散到各个槽位对应的分片中。 no readonly-lua-route-to-slave-enabled 是否把只读账号的只读lua路由到从节点,如果开启,只读账号的只读lua可以执行,且会路由到从节点。 仅读写分离实例支持该参数。 yes:开启 no:关闭 no cluster-sentinel-enabled 实例兼容哨兵(Sentinel)模式。 仅Proxy集群和读写分离实例支持该参数。 yes:开启 no:关闭 no scan-support-wr-split 该参数关闭时,scan命令在master节点执行,该参数开启后,scan命令将在slave节点执行。 仅Proxy集群实例支持该参数。 如果历史创建的Proxy集群实例不支持该参数,请联系技术支持升级实例版本。 yes:开启 no:关闭 no 表2 Memcached缓存实例配置参数说明 参数名 参数解释 取值范围 默认值 timeout 客户端与服务端连接空闲超时断开时间,参数设为0表示连接永不断开。 0~7200 单位:秒 0 maxclients 最大同时连接的客户端个数。 1,000~10,000 10,000 maxmemory-policy 内存使用达到上限时对缓存数据管理策略。 volatile-lru:根据LRU算法删除设置了过期时间的键值。 allkeys-lru:根据LRU算法删除任一键值。 volatile-random:删除设置了过期时间的随机键值。 allkeys-random:删除一个随机键值。 volatile-ttl:删除即将过期的键值,即TTL值最小的键值。 noeviction:不删除任何键值,只是返回一个写错误。 noeviction reserved-memory-percent 预留给后台进程用于持久化、主从同步等内部处理的内存百分比(相对于最大可用内存的百分比)。 0-80 30
  • 修改或删除自定义模板 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“参数模板”,进入“参数模板”页面。 选择“自定义”。 如果需要修改自定义参数模板,可以通过以下两种方式进行修改。 单击需要修改的自定义模板右侧“操作”列下的“编辑”。 修改模板名称和描述。 在“配置参数”区域,在选项框选择“可修改参数”,在需要修改的配置参数对应的“参数运行值”列输入修改值。各参数的详细介绍见表1,一般情况下,按照系统默认值设置参数即可。 单击“确定”,完成修改配置参数。 单击自定义模板名称,进入模板的参数页面,可修改配置参数。 配置参数选择“可修改参数”。支持通过参数名称搜索对应的参数,直接在搜索栏输入关键字即可。 单击“修改”。 在需要修改的配置参数对应的“参数运行值”列输入修改值。各参数的详细介绍见表1,一般情况下,按照系统默认值设置参数即可。 单击“保存”,完成修改配置参数。 如果需要删除自定义模板,单击需要删除的自定义模板右侧“操作”列下的“删除”。 单击“是”,完成删除自定义参数模板。
  • 创建自定义参数模板 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“参数模板”,进入“参数模板”页面。 选择“系统默认”或者“自定义”页签,可针对系统默认模板或已经创建好的自定义模板进行新的自定义模板创建。 如果选择“系统默认”,则单击需要创建实例类型的系统默认模板右侧“操作”列下的“创建为自定义模板”。 如果选择“自定义”,则单击需要复制的自定义模板右侧“操作”列下的“复制”。 设置“模板名称”和“描述”。 模板名称长度为4到64位的字符串,以字母或者数字开头,模板名称只能包含字母、数字、中划线、下划线和点号。描述内容可以为空。 配置参数选择“可修改参数”。 当前支持通过参数名称搜索对应的参数,直接在搜索栏输入关键字即可。 在需要修改的配置参数对应的“参数运行值”列输入修改值。 各参数的详细介绍见表1,一般情况下,按照系统默认值设置参数即可。 表1 Redis缓存实例配置参数说明 参数名 参数解释 例外场景 取值范围 默认值 active-expire-num 定期删除过期键时随机检查key的数量。 Redis 3.0和Redis 6.0企业版实例不支持该参数。 说明: 该参数为2021年9月新增,在此之前创建的实例,如果无法正常修改参数值,请联系技术支持处理。 1~1,000 20 timeout 客户端空闲N秒(timeout参数的取值)后将断开连接。参数值为0表示禁用该功能,即客户端空闲不会断开连接。 - 0~7200 单位:秒 0 appendfsync 操作系统的fsync函数刷新缓冲区数据到磁盘,有些操作系统会真正刷新磁盘上的数据,其他一些操作系统只会尝试尽快完成。 单机实例不支持该参数。 no:不调用fsync,由操作系统决定何时刷新数据到磁盘,性能最高。 always:每次写AOF文件都调用fsync,性能最差,但数据最安全。 everysec:每秒调用一次fsync。兼具数据安全和性能。 no appendonly 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 单机实例不支持该参数。 yes:开启日志记录,即开启持久化功能。 no:关闭日志记录,即关闭持久化功能。 only-replica:仅开启从节点持久化功能。 说明: 目前appendonly参数默认只有yes和no两个配置项,如果是Redis 4.0/5.0/6.0基础版主备或集群实例,或企业版高性能型主备实例,联系运维人员放通该参数的白名单后,会显示only-replica配置项。 yes client-output-buffer-limit-slave-soft-seconds 主从同步缓冲区大小超过client-output-buffer-slave-soft-limit主从同步缓冲区大小软限制,并持续时间超过此参数值时,服务端会主动断开连接。 - 0~60 单位:秒 60 client-output-buffer-slave-hard-limit 主从同步缓冲区大小硬限制。如果同步缓冲区大小超过这个值,则主从同步连接立即断开。 - 0~17,179,869,184 单位:字节 1,717,986,918 client-output-buffer-slave-soft-limit 主从同步缓冲区大小软限制。如果同步缓冲区大小超过这个值,并持续时间达到client-output-buffer-limit-slave-soft-seconds参数配置的秒数,则主从同步连接断开。 - 0~17,179,869,184 单位:字节 1,717,986,918 maxmemory-policy 内存使用达到上限(maxmemory)时,对缓存数据的逐出策略,有8个取值供选择。 - volatile-lru:根据LRU算法删除设置了过期时间的键值。 allkeys-lru:根据LRU算法删除任一键值。 volatile-random:删除设置了过期时间的随机键值。 allkeys-random:删除一个随机键值。 volatile-ttl:删除即将过期的键值,即TTL值最小的键值。 noeviction:不删除任何键值,只是返回一个写错误。 volatile-lfu: 根据LFU算法删除设置了过期时间的键值。 allkeys-lfu: 根据LFU算法删除任一键值。 详情可参考Redis官网的逐出策略。 volatile-lru 说明: 如果是2020年7月之前创建的Redis实例,且没有修改过该参数,则默认值为noeviction。如果是2020年7月之后创建的实例,默认值都为volatile-lru。 lua-time-limit Lua脚本的最长执行时间。 - 100~5,000 单位:毫秒 5,000 master-read-only 设置实例为只读状态。设置只读后,所有写入命令将返回失败。 Proxy集群实例不支持该参数。 yes no no maxclients 最大同时连接的客户端个数。 该参数为单节点(单分片)连接数上限: 集群实例单节点连接数上限=实例连接数上限/分片数。 单机/主备实例,单节点连接数上限=实例最大连接数。 读写分离实例暂不支持该参数。 1,000~50,000 10,000 proto-max-bulk-len Redis协议中的最大的请求大小。 - 1,048,576~536,870,912 单位:字节 536,870,912 repl-backlog-size 用于增量同步的复制积压缓冲区大小。这是一个用来在从节点断开连接时,存放从节点数据的缓冲区,当从节点重新连接时,如果丢失的数据少于缓冲区的大小,可以用缓冲区中的数据开始增量同步。 - 16,384~1,073,741,824 单位:字节 1,048,576 repl-backlog-ttl 从节点断开后,主节点释放复制积压缓冲区内存的秒数。值为0时表示永不释放复制积压缓冲区内存。 - 0~604,800 单位:秒 3,600 repl-timeout 主从同步超时时间。 单机实例不支持该参数。 30~3,600 单位:秒 60 hash-max-ziplist-entries 当hash表中记录数少于参数值,使用ziplist编码格式,节约内存。 - 1~10000 512 hash-max-ziplist-value 当hash表中各字段长度的最大值小于参数值时,使用ziplist编码格式,节约内存。 - 1~10000 64 set-max-intset-entries 当一个集合仅包含字符串且整型元素数量少于参数值时,使用intset编码格式,节约内存。 - 1~10000 512 zset-max-ziplist-entries 当有序集合中记录数少于参数值,使用ziplist编码格式,节约内存。 - 1~10000 128 zset-max-ziplist-value 当有序集合中各字段长度的最大值小于参数值时,使用ziplist编码格式,节约内存。 - 1~10000 64 latency-monitor-threshold 延时监控的采样时间阈值(最小值)。 当阈值设置为0时,不做监控,也不采样;当阈值设置为大于0时,将监控并记录执行耗时大于阈值的操作。 您可以通过LATENCY等命令获取统计数据和配置、执行采样监控。 说明: latency-monitor-threshold参数一般在定位问题时使用。采集完latency信息,定位问题后,建议重新将latency-monitor-threshold设置为0,以免引起不必要的延迟。 Proxy集群实例不支持该参数。 0~86400000 单位:毫秒 0 notify-keyspace-events 键空间通知,配置该参数后客户端可以通过Redis的订阅与发布功能,来接收那些以某种方式改动了Redis数据集的事件。该参数配置为空时,功能关闭。当参数不是空字符串时,功能开启。 Proxy集群实例不支持该参数。 可配置为以下字符的任意组合,指定了服务器该发送哪些类型的通知: K:键空间通知,所有通知以__keyspace@__为前缀。 E:键事件通知,所有通知以__keyevent@__为前缀。 g:DEL、EXPIRE、RENAME等类型无关的通用命令的通知。 $:字符串命令的通知。 l:列表命令的通知。 s:集合命令的通知。 h:哈希命令的通知。 z:有序集合命令的通知。 x:过期事件:每当有过期键被删除时发送。 e:驱逐(evict)事件:每当有键因为maxmemory政策而被删除时发送。 A:参数g$lshzxe的别名。 输入的参数中至少有一个K或者E,A不能与g$lshzxe同时出现,不能出现相同字母。例如,如果只想订阅键空间中和列表相关的通知,那么参数就应该设为Kl。将参数设为字符串"AKE"表示发送所有类型的通知。 Ex slowlog-log-slower-than Redis慢查询会记录超过指定执行时间的命令。slowlog-log-slower-than用于配置记录到redis慢查询命令执行时间阈值。 - 0~1,000,000 单位:微秒 10,000 proxy-slowlog-log-slower-than Proxy节点慢查询会记录超过指定执行时间的命令。proxy-slowlog-log-slower-than用于配置记录到proxy节点慢查询命令的执行时间阈值。 目前仅“华东-上海二”和“华南-广州”区域的Proxy集群和读写分离实例支持该参数。 30,000~2,000,000 单位:微秒 256,000 slowlog-max-len Redis慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 - 0~1,000 128 proxy-slowlog-max-len Proxy节点慢查询记录的条数。注意慢查询记录会消耗额外的内存。可以通过执行SLOWLOG RESET命令清除慢查询记录。 目前仅“华东-上海二”和“华南-广州”区域的Proxy集群和读写分离实例支持该参数。 0~1,000 128 auto-kill-timeout-lua-process 开启该参数时,执行超时的lua脚本进程会被自动kill。如果lua脚本执行了写操作无法kill,并且实例开启了持久化时,则该lua脚本所在的节点会自动重启,lua脚本执行的写操作将不被保存。 单机实例和Redis 3.0实例不支持该参数。 yes:开启 no:关闭 no audit-log-customer-command-list 审计日志需要额外记录的命令。审计日志默认只记录写命令,该参数可以指定用户额外需要记录的命令。只有在开启了审计日志的情况下才有效。 审计日志目前为白名单特性,只有开启了审计日志白名单的用户,并且仅当实例类型为Proxy集群实例时,才显示该参数。 该参数配置的值必须由英文字母或与.-_组成的命令,且必须以英文字母开头和结尾,每个命令最大长度为10,最多支持配置10个命令。命令之间用空格隔开, 配置的内容最后必须以空格结尾。 - dispatch-pubsub-to-fixed-shard 该参数用于指定发布订阅的channel是否集中在0号槽位对应的分片上。开启开关时,发布订阅的处理逻辑与单机版一致。用户轻度使用发布订阅时,推荐开启开关。用户重度使用发布订阅功能时,请使用默认配置,让订阅分担到全部分片中。 仅Proxy集群实例支持该参数。 yes:开启开关。订阅的channel都集中在0号槽位对应的集群分片上。 no:关闭开关。根据订阅channel值计算出hash槽位值,再将channel分散到各个槽位对应的分片中。 no readonly-lua-route-to-slave-enabled 是否把只读账号的只读lua路由到从节点,如果开启,只读账号的只读lua可以执行,且会路由到从节点。 仅读写分离实例支持该参数。 yes:开启 no:关闭 no cluster-sentinel-enabled 实例兼容哨兵(Sentinel)模式。 仅Proxy集群和读写分离实例支持该参数。 yes:开启 no:关闭 no scan-support-wr-split 该参数关闭时,scan命令在master节点执行,该参数开启后,scan命令将在slave节点执行。 仅Proxy集群实例支持该参数。 如果历史创建的Proxy集群实例不支持该参数,请联系技术支持升级实例版本。 yes:开启 no:关闭 no maxclients、reserved-memory-percent、client-output-buffer-slave-soft-limit、client-output-buffer-slave-hard-limit参数的默认值和取值范围与实例规格有关,因此参数模板不显示该四个参数。 表1中的内存优化相关参数可以参考Redis官网说明,链接:https://redis.io/topics/memory-optimization。 单击“确定”,完成创建自定义参数模板。
  • 前提条件 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。 已创建弹性 云服务器ECS ,创建弹性云服务器的方法,请参见创建弹性云服务器。 ECS请选择与DCS Cluster集群实例相同虚拟私有云、子网和安全组,并且需要绑定弹性公网IP。
  • 安装Rump 登录弹性云服务器。 下载Rump的release版本。 以64位Linux操作系统为例,执行以下命令: wget https://github.com/stickermule/rump/releases/download/0.0.3/rump-0.0.3-linux-amd64; 解压缩后,添加可执行权限。 mv rump-0.0.3-linux-amd64 rump; chmod +x rump;
  • 迁移原理 Rump使用SCAN来获取keys,用DUMP/RESTORE来get/set值。 SCAN是一个时间复杂度O(1) 的命令,可以快速获得所有的key。DUMP/RESTORE使读/写值独立于关键工作。 以下是Rump的主要特性: 通过SCAN非阻塞式的获取key,避免KEYS命令造成Redis服务阻塞。 支持所有数据类型的迁移。 把SCAN和DUMP/RESTORE操作放在同一个管道中,利用pipeline提升数据迁移过程中的网络效率。 不使用任何临时文件,不占用磁盘空间。 使用带缓冲区的channels,提升源服务器的性能。
  • 迁移数据 执行如下命令迁移数据: rump -from {source_redis_address} -to {target_redis_address} {source_redis_address} 源Redis实例地址,格式为:redis://[user:password@]host:port/db,中括号部分为可选项,实例设置了密码访问时需要填写密码,格式遵循RFC 3986规范。注意用户名可为空,但冒号不能省略,例如redis://:mypassword@192.168.0.45:6379/1。 db为数据库编号,不传则默认为0。 {target_redis_address} 目标Redis实例地址,格式与from相同。 以下示例表示将本地Redis数据库的第0个DB的数据迁移到192.168.0.153这台Redis数据库中,其中密码以*替代显示。 [root@ecs ~]# ./rump -from redis://127.0.0.1:6379/0 -to redis://:******@192.168.0.153:6379/0 .Sync done. [root@ecs ~]#
  • redis-cli常用命令举例 连接实例: ./redis-cli -h {IP} -p 6379 指定连接某个DB: ./redis-cli -h {IP} -p 6379 -n 10 连接cluster集群实例: ./redis-cli -h {IP} -p 6379 -c 测试时延(原理是发ping命令): ./redis-cli -h {IP} -p 6379 --latency 执行scan扫描匹配指定模式的key: ./redis-cli -h {IP} -p 6379 --scan --pattern '*:12345*'
  • 测试步骤 创建Redis缓存实例。 创建3台弹性云服务器(ECS),ECS选择与实例相同可用区、VPC、子网和安全组。 如果是测试单机或主备实例,创建1台ECS即可。 在每台ECS上安装redis-benchmark。可通过以下两种方式安装Redis-server,安装Redis-server的同时,会同步安装benchmark。 安装方法一: 下载redis客户端,此处以redis-6.0.9版本为例。 wget http://download.redis.io/releases/redis-6.0.9.tar.gz 解压客户端压缩包。 tar xzf redis-6.0.9.tar.gz 进入redis-6.0.9的src目录下。 cd redis-6.0.9/src 编译源码。 make 编译完成后,工具一般在redis-x.x.x的src目录下。 查看是否有redis-benchmark可执行文件。 ls 将工具安装到系统中。 make install 安装方法二: 根据ECS的不同的操作系统直接安装Redis-server,下面以ubuntu和CentOS系统为例: ubuntu系统 sudo apt update sudo apt install redis-server CentOS系统 sudo yum install epel-release sudo yum update sudo yum -y install redis 每台ECS上执行测试命令。 redis-benchmark -h {IP} -p {Port} -a {password} -n {nreqs} -r {randomkeys} -c {connect_number} -d {datasize} -t {command} 参数参考值:-c {connect_number}:200,-n {nreqs}:10000000,-r {randomkeys}:1000000,-d {datasize}:32。 -h表示实例的 域名 连接地址或IP地址。 -p表示实例的端口,默认为6379。 -a表示实例的连接密码,免密连接的实例无需输入-a {password}。 -t表示执行具体测试命令合集。例如只测试set命令时,使用-t set;如果要测试ping、get、set命令,则使用 -t ping,set,get,命令间使用“,”分隔。 -c表示客户端连接数。 -d表示单条数据大小,单位Byte。 -n表示测试包数量。 -r表示使用随机key数量。 不断调整客户端连接数,执行4,得到最大的QPS(Query Per Second,表示每秒处理的读写操作数,单位:次/秒)。 取3台测试ECS得到的每秒操作数总和,即为对应规格的性能数据。 如果测试Redis集群,建议每台测试ECS各开启两个benchmark客户端。 redis-benchmark 测试cluster集群实例时需要加 --cluster 参数,其他实例类型不需要加。 如果想对cluster集群的最大连接数进行性能压测,但是压测到1万连接时程序退出,或者报错 Cannot assign requested address。这说明是测试用的ECS本机性能不足,请先检查自己是否只用了1台ECS进行压测。想要对集群压测,建议准备3台ECS,每台ECS起3个redis-benchmark来测试redis实例的最大连接数。
  • redis-benchmark常用命令举例 单机、主备、读写分离和proxy集群的测试命令: ./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} -t {command} cluster集群测试命令: ./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} --cluster -t {command} 测试短连接: ./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} -k 0 -t {command} 测试空闲连接: ./redis-benchmark -h {IP或域名} -p 6379 -a {pwd} -c {clients} -I