本操作用于为新创建的Redis实例自定义网络、客户端和存储等参数配置,请根据客户实际业务需求酌情配置。若无特殊配置需求,可直接跳过该步骤。
在“实例管理”页面中,单击上述Redis实例的名称 ,进入其详情页面。
在[参数配置]页签中,配置参数后,单击
保存
,完成操作。参数 说明 常用参数 RDB快照 save 用于设置内存数据在通过RDB(Relation Data Base,关系数据库)快照方式持久化到磁盘时的触发策略,即配置“指定的间隔时间”和“数据变化次数”参数。 客户端 maxclients 用于设置客户端的同时最大连接数。 内存管理 maxmemory-policy 用于设置内存达到最大值时的处理策略。该参数值可选noeviction、volatile-lru、allkeys-lru、volatile-lfu、allkeys-lfu、volatile-random、allkeys-random和volatile-ttl。具体说明如下:
* noeviction:不清除任何数据,仅在发生写操作时返回错误提示。
* volatile-lru:在遵循LRU(Least Recently Used,最近最少使用)算法的基础上,只清除有过期设置的Key。
* allkeys-lru:遵循LRU(Least Recently Used,最近最少使用)算法清除Key。
* volatile-lfu:在遵循LFU(Least Frequently Used,最不经常使用)算法的基础上,只清除有过期设置的Key。
* allkeys-lfu:遵循LFU(Least Frequently Used,最不经常使用)算法清除Key。
* volatile-random:随机删除有过期设置的Key。
* allkeys-random:随机删除Key。
* volatile-ttl:针对有过期设置的Key,优先删除剩余时间(Time to Live,TTL) 短的Key。AOF持久化追加模式 appendonly 用于设置是否启用AOF(Append Only File)同步。AOF是记录Redis实例执行指令的日志文件,是一种替代的持久化模式,可以提供更好的持久性。当设置为yes,即启用AOF后,RDB快照的save设置将失效。 appendfsync 用于设置AOF同步策略。该参数值可选no、always和everysec。具体说明如下:
* no:关闭AOF同步,仅在操作系统需要时才刷新数据。该策略下Redis实例的性能更快,但数据丢失风险也更大。
* always:每次写完仅有的附录日志后就进行AOF同步。该策略下Redis实例的性能会变差,但数据丢失风险相对较低。
* everysec:每秒钟进行一次AOF同步。相对no和always策略而言,该策略能较好的实现性能和数据安全之间的平衡。aof-use-rdb-preamble 用于设置是否启用AOF和RDB混合使用。当设置为yes,即启用AOF和RDB混合使用后,Redis实例的内存数据将以一定频率执行全量快照操作,并在两次快照期间,通过AOF日志记录期间的所有执行指令。此方式不仅能提升Redis实例重启时的加载速度,还能避免大量数据丢失。 LUA分片 lua-time-limit 用于设置一个Lua脚本的最大执行时间。 主动碎片整理 activedefrag 用于设置是否启用主动进行内存碎片整理的功能。 其他参数 网络 timeout 用于设置网络连接的超时时间。即:在Redis实例的闲置时间达到设置的超时时间后,连接将关闭。其中,0代表禁用超时时间设置。 tcp-keepalive 用于设置TCP连接的保持时长。其中,0代表禁用TCP连接保持时长设置。 通用 loglevel 用于设置缓存服务Redis的日志等级。 databases 用于设置数据库的数量。 RDB快照 stop-writes-on-bgsave-error 用于设置当最近一次的RDB快照 (至少设有一个保存点)后台保存失败时,Redis实例是否停止接受写操作。当设置为yes,即上述情况发生时停止接受写操作后,能够在一定程度上使用户意识到数据没有正确地持久化在磁盘上,避免因错误未被发现而造成损失。 rdbcompression 用于设置在转储.rdb数据库时,是否对字符串对象启用LZF压缩。当设置为no,即启用LZF压缩字符串对象后,可在数据保存过程中节省部分CPU,但是,若数据中存在可压缩的Value或Key时,可能会导致数据集较大。 rdbchecksum 用于设置是否对Redis实例进行数据校验(使用CRC64算法)当设置为no,即不进行数据校验后,虽然格式可能会更容易被破坏,但是却可以获得更大的性能,避免在保存和加载RDB文件时造成的大约10%的性能消耗。 副本 replica-serve-stale-data 用于设置当从节点失去与主节点的连接,或从节点的复制仍在进行中时,从节点返回请求的方式。
* 当设置为yes时,从节点将对请求进行回复,但是,回复可能含有过时数据,或者由于是第一次复制,数据集可能为空。
* 当设置为no时,从节点将对除指定命令外的任何请求做出 “与主节点同步中 ”的错误回复。除去的指定命令包括:INFO、REPLICAOF、AUTH、PING、SHUTDOWN、REPLCONF、ROLE、CONFIG、SUBSCRIBE、UNSUBSCRIBE、PUNSUBSCRIBE、PUBLISH、PUBSUB、COMMAND、POST、HOST和LATENCY。repl-ping-replica-period 用于设置从节点向主节点发送PING信号的间隔时间。 repl-timeout 用于设置从节点副本复制时的超时时间。 repl-backlog-size 用于设置主节点backlog缓冲区的大小。backlog是从节点与主节点连接断开时,主机点进行数据缓存的一个缓冲区,以便在从节点重新与其建立连接后,无需完全重新同步,只传递连接断开期间丢失的部分数据即可。 repl-backlog-ttl 用于设置主节点backlog缓冲区中,缓存数据的保留时间。 即:当最后一个从节点与主节点断开连接后,在所设置的缓存数据保留时间范围内,backlog中的缓存数据不会被释放,若主、从节点之间的连接恢复,从节点将依据backlog进行丢失数据的同步。但是,在到达所设置的缓存数据保留时间后主从、节点之间连接还未恢复,backlog中的缓存数据将会被释放,若主、从节点之间的连接恢复,从节点必须重新与主节点进行完全同步。其中,0代表永远不会释放backlog缓冲区。 min-replicas-to-write 用于设置主节点允许接受写请求的最小可用副本数。即:当主节点的可用副本数小于此设置数值时,主节点将不再接受写请求。其中,0代表主节点始终接受写请求,无论是否拥有可用副本。 min-relicas-max-lag 用于设置主节点在接受副本(从节点)的ping请求时,最小的等待时间。即:当主节点在达到最小等待时间后仍未收到副本的ping请求时,该副本将被视为不可用。其中,0代表禁用等待时间设置,主节点始终接受写请求,无论是否拥有可用副本。 Key追踪 tracking-table-max-keys 用于设置Redis实例失效表中Key的最大缓存数量。即:为了协助客户端缓存,Redis实例支持通过失效表记录并跟踪客户端与Key之间的访问关系。当失效表中被跟踪的Key发生修改时,将依据表中记录的访问关系向客户端发生失效消息。当Key缓存超过此设置数值时,其失效消息将随机发送给各客户端。其中,0代表无最大缓存数量限制。由于失效表中Key缓存的使用会占用内存,而内存不足会导致密钥失效,所以,请适当调整该参数值,以确保在限制内存使用的同时仍能跟踪足够的Key。 安全 acllog-max-len 用于设置ACL日志的最大长度。ACL日志用于跟踪与ACL相关的失败命令和认证事件,有利于解决被ACL阻止的失败命令,存储在内存中,可使用 ACL LOG RESET 命令回收内存。 内存管理 maxmemory-samples 用于设置使用LRU、LFU和TTL算法时,所检查的样本数。LRU、LFU和TTL算法为节省内存,都是通过抽样得到相对精确的近似值,所以,可以通过调整所检查的样本数来调整算法的速度和准确性。 线程IO io-threads 用于设置Redis实例的I/O线程数。即:虽然Redis实例大部分是单线程的,但是存在一些操作需要在侧线程执行,如UNLINK和慢速I/O访问等。其中,1代表Redis实例直接使用主线程。该配置仅适用于多核场景,且实际核心数需要大于此参数值(预留1~2核)。 io-threads-do-reads 用于设置Redis实例的读请求是否启用多线程。即:当线程I/O被启用时,Redis实例仅使用线程进行写入,如果需要对读取和协议解析也启用线程,则需要配置此参数值为yes。 AOF持久化追加模式 no-appendfsync-on-rewrite 用于设置AOF日志文件在后台保存期间(后台AOF日志的写或重写),是否启用AOF同步(fsync)。当AOF日志文件的同步策略被设置为always或everysec,且在后台保存期间存在大量磁盘I/O时,在一些Linux配置中进行AOF同步可能会发生阻塞。所以,从数据持久化角度分析,建议该参数值选no,除非对数据延迟有严格要求需要选择为yes。当该参数值选no时,相当于设置Redis实例的AOF同步策略为no,存在数据丢失的风险。 auto-aof-rewrite-percentage 用于设置AOF日志文件自动重写的百分比。即:当AOF日志文件的大小增长到此设置数值时,Redis实例将自动重写此日志文件。其中,0代表禁用AOF日志文件的自动重写功能。 auto-aof-rewrite-min-size 与auto-aof-rewrite-percentage参数对应,用于为自动重写的AOF日志文件的大小设置最小值。 aof-load-truncated 用于设置在文件系统故障时,AOF日志文件被截断损坏后的响应策略。
* 当设置为yes时,AOF日志文件会继续加载,并发出一个日志用于通知此故障事件。
* 当设置为no时,Redis实例会以错误的方式中止,并拒绝启动,需要在重启前使用redis-check-aof工具对AOF日志文件进行修复。
> 警告:
>
> 该参数的设置仅适用于AOF日志文件末端阶段损坏,若在中间被发现损坏,Redis实例仍会以错误的方式中止。Redis集群模式配置 cluster-node-timeout 用于设置集群节点的超时时间。 cluster-replica-validity-factor 用于设置副本的有效因子,以便判定从节点是否需要进行故障迁移。即:当副本从最后一次与主节点的交互开始,时间超过 cluster-node-timeout * cluster-replica-validity-factor + repl-ping-replica-period 时,副本就不需要进行故障转移。当该参数值设置较大时,可能会允许数据太旧的从节点故障转移到主节点,而设置较小时,可能会使集群无法判定需要故障转移的从节点。所以,建议设置该参数值为0,使从节点无论何时均进行故障转移,以保证所有故障分区愈合时,集群总是能够继续运行下去。 cluster-require-full-coverage 用于设置当主节点下线且无相应从节点进行故障恢复时,集群是否不可用。其中,yes代表集群不可用,no代表集群可用。 cluster-allow-reads-when-down 用于设置在集群失效状态下,是否允许读取节点数据。当集群因主节点数量达不到最小值或有散列槽没有分配时,会被标记为失效。当设置为yes时,允许读取节点数据,不仅能够保证读操作的高可用性, 还可以避免不一致写操作。当设置为no时,不允许读取节点数据,将避免从一个不知道集群状态变化的节点读到不一致数据的风险。 慢日志 slowlog-log-slower-than 用于设置会被记录命令的执行超限时间。即:执行时间超过此设置数值的命令会被记录在慢日志(SLOW LOG)中。 slowlog-max-len 用于设置慢日志的最大记录条目数。即:当慢日志中记录的日志条目数达到此设置数值时,最旧的一条日志将被删除,最新的一条日志将记录进来。 高级配置 hash-max-ziplist-entries 用于设置ziplist的最大存储条目数。即:当Hash中数据项(即field-value对)的数目超过此设置数值时,ziplist会转成dict。 hash-max-ziplist-value 用于设置ziplist中单个条目value的最大长度。即:当Hash中插入的任意一个value的长度超过此设置数值时,ziplist会转成dict。 list-max-ziplist-size 用于设置quicklist节点中ziplist列表的最大值。
* 当该参数值为非负数时,代表ziplist列表包含的数据项的最大个数。
* 当该参数值为负数时,代表ziplist列表的最大字节长度。其中,-5代表最大字节长度不超过64KiB(不建议用于正常工作负荷)。-4代表最大字节长度不超过32KiB(不推荐)。-3代表最大字节长度不超过16KiB(一般不推荐)。-2代表最大字节长度不超过8KiB(推荐)。-1代表最大字节长度不超过4KiB(推荐)。list-compress-depth 用于设置quicklist节点的压缩深度。即:quicklist节点两端不被压缩的节点个数。其中,0代表都不压缩。 set-max-intset-entries 用于设置ziplist的最大存储条目数。即:当Hash中数据项(即field-value对)的数目超过此设置数值时,ziplist会转成dict。 zset-max-ziplist-entries 用于设置zset的最大保存个数。即:当zset中的数据项(即field-value对)个数超过此设置数值时,ziplist会转成dict。 zset-max-ziplist-value 用于设置zset中单个数据项value的最大长度。即:当zset中插入的任意一个value的长度超过此设置数值时,ziplist会转成dict。 hll-sparse-max-bytes 用于设置稀疏存储占用的最大字节数。即:当value的值小于等于此设置数值时使用稀疏数据结构(sparse),大于此设置数值时使用稠密的数据结构(dense)。 stream-node-max-bytes 用于设置Stream中单个宏节点(Macro Node)能够占用的最大内存。 stream-node-max-entries 用于设置单个宏节点(Macro Node)的最大可存储条目数。 activerehashing 用于设置是否开启主动重置Hash表。
* 当设置为yes时,Redis实例将每100毫秒使用1毫秒CPU时间重置Hash表。
* 当设置为no时,Redis实例将关闭Hash表主动重置功能,以满足对实时性要求较高的场景。client-output-buffer-limitnormal 用于设置普通客户端输出缓冲区的字节限制。
* 硬限制:达到此设置数值后,客户端会立刻断开连接。
* 软限制:达到此设置数值后,会在软限制时延结束后,断开连接。client-output-buffer-limitreplica 用于设置从节点客户端输出缓冲区的字节限制。
* 硬限制:达到此设置数值后,客户端会立刻断开连接。
* 软限制:达到此设置数值后,会在软限制时延结束后,断开连接。client-output-buffer-limitpubsub 用于设置订阅发布客户端输出缓冲区的字节限制。
* 硬限制:达到此设置数值后,客户端会立刻断开连接。
* 软限制:达到此设置数值后,会在软限制时延结束后,断开连接。proto-max-bulk-len 用于设置Redis协议中批量请求的大小限制。该参数值必须大于1MiB,通常设置为512MiB。 hz 用于设置Redis实例执行定期任务的频率,从而改变清除过期Key和清理超时连接等的效率。此参数值的取值范围为1~500,默认为10。当提高此参数值时,虽然清除过期Key的反应更快,清理超时连接的精确性更高,但是Redis实例空闲时也将占用更多CPU。所以,请在100以内调整此参数值,除非环境对延迟的要求非常低,则可提高此参数值到100。 dynamic-hz 用于设置是否启用动态调整定期任务执行频率(hz)的功能。即:通常情况下,hz的值需要和客户端连接数量成比例。一个空闲的实例将使用很少的CPU时间,而一个繁忙的实例将有更多的响应。当设置为yes,即启用动态调整hz功能时,实际配置的hz值将被用作基线,当有许多客户端连接时,将根据实际需要使用一定倍数配置值的hz。 aof-rewrite-incremental-fsync 用于设置在子线程重写AOF日志文件时,是否每产生32MiB的数据就进行一次同步。当设置为yes,即每产生32MiB的数据就进行一次同步时,对于将文件更多地提交到磁盘并避免大的延迟峰值很有帮助。 rdb-save-incremental-fsync 用于设置在Redis实例保存RDB文件时,是否每产生32MiB的数据就进行一次同步。当设置为yes,即每产生32MiB的数据就进行一次同步时,对于将文件更多地提交到磁盘并避免大的延迟峰值很有帮助。 lfu-log-factor 用于设置计数器的增长速度。即:此设置数值越大,计数器增长的越慢。 lfu-decay-time 用于设置计数器的衰减速度。 主动碎片整理 active-defra g-ignore-bytes 用于设置启动主动碎片整理时,最小的碎片量。 active-defrag-threshold-lower 用于设置启动主动碎片整理时,最小的碎片化百分比。 active-defrag-threshold-upper 用于设置在尽最大努力进行主动碎片整理时,最大的碎片化百分比。 active-defrag-cycle-min 用于设置在内存自动整理时,占用的CPU资源的最小百分比。 active-defrag-cycle-max 用于设置在内存自动整理时,占用的CPU资源的最大百分比。 active-defrag-max-scan-fields 用于设置从主词典扫描中处理的set/hash/zset/list字段的最大数量。 jemalloc-bg-thread 用于设置是否清除Jemalloc后台线程。