date: 2020-06-10title: redis 6.0.4配置文件详解 #标题
tags: redis #标签
categories: redis # 分类

本文用于记录下redis 6.0.4配置文件解释,以便可以结合实际配置一个符合生产环境的实例。

network相关

bind

指定监听地址,默认监听回环地址127.0.0.1,bind后面可以指定多个IP或者ipv6的地址,下面是官方给出的样例:

  1. # bind 192.168.1.100 10.0.0.1
  2. # bind 127.0.0.1 ::1

若要监听主机上所有接口,则需指定为bind 0.0.0.0

protected-mode

是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,
拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为no

port

指定监听端口,默认监听6379。

tcp-backlog

此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,redis默认是511,而Linux的默认参数值是128。对于负载很大的服务程序来说大大的不够。一般会将它修改为1024或者更大。当系统并发量大并且客户端
速度缓慢的时候,可以将这二个参数一起参考设定。

配置方法:

  1. $ echo "net.core.somaxconn = 1024" > /etc/sysctl.d/redis.conf
  2. $ sysctl -p /etc/sysctl.d/redis.conf #刷新使其生效
  3. net.core.somaxconn = 1024

unixsocket

指定redis启动后的socket文件,一般无需配置。

tcp-keepalive

tcp keepalive参数。如果设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。这个值一般保持默认的300即可。

GENERAL

daemonize

是否后台运行redis实例,默认为no,一般配置为yes。

pidfile

指定pid文件,此文件在redis启动时自动创建,停止时自动删除。

loglevel

指定日志记录的等级,可选项如下:

  • debug (大量调试信息,对开发测试时很有用)
  • verbose (许多很少有用的消息,但比debug要少一些)
  • notice (一般消息,默认为notice,生产中建议配置为notice)
  • warning (只有非常重要/关键的消息被记录)

logfile

日志记录方式,默认为标准输出,如果配置 Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会输出给 /dev/null,一般会指定一个文件名来存放日志,如logfile /apps/usr/redis/logs/redis-7001.logs

syslog-enabled

是否打开记录syslog功能,默认为no,一般无需开启。

syslog-ident

syslog的标识符,一般无需配置。

databases

设置数据库的数量(默认有16个库),默认登录后的数据库为0,可以使用SELECT命令在连接上指定数据库id。

always-show-logo

是否总显示logo,没啥卵用的配置,不用管。

SNAPSHOTTING

save

如果对数据库的写操作发生了给定的秒数和给定的写操作数,将保存数据库到本地磁盘。,可以通过注释掉所有save项行来完全禁用保存。也可以通过添加一个带有一个空字符串参数的save指令来删除所有之前确认的保存点,如:save ""

默认配置:

  1. save 900 1
  2. save 300 10
  3. save 60 10000

默认配置的意思为:

  • 900秒(15分钟)内,如果有一个key发生改变,则保存;
  • 300秒(5分钟)内,如果有10个键发生改变,则保存;
  • 60秒内,如果有10000个key发生改变,则保存。

stop-writes-on-bgsave-error

默认情况下,redis如果启用了rdb持久化,并且最后一次持久化写入失败,redis将会拒绝所有写操作,这个问题不太容易被定位到。

所以可以配置此选项,当RDB持久化出现错误后,是否依然进行继续进行工作,yes:不能进行工作,no:可以继续进行工作,可以通过info中的rdb_last_bgsave_status了解RDB持久化是否有错误。

rdbcompression

配置存储至本地数据库时是否压缩数据,默认为yes。Redis采用LZF压缩方式,但占用了一点CPU的时间。若关闭该选项,但会导致数据库文件变的巨大。建议开启。

rdbchecksum

是否校验rdb文件,从rdb格式的第五个版本开始,在rdb文件的末尾会带上CRC64的校验和。这有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗,所以如果你追求高性能,可以关闭该配置。

dbfilename

定义rdb保存数据的文件名,建议配置为dump_port.rdb,其中port为此实例监听的端口号。

rdb-del-sync-files

在没有启用持久性的情况下,删除复制实例中使用的RDB文件。默认情况下,这个选项是禁用的,但是在一些环境中,为了满足需求或其他安全问题,RDB文件由主保存在磁盘上以提供副本,或者由副本存储在磁盘上为了加载它们进行初始同步,应尽快删除。注意,此选项仅在AOF和RDB持久性都禁用的情况下有效,否则将完全忽略。

dir

指定redis工作目录,如:/apps/usr/redis/data/7001,指定后,rdb及aof持久化文件都将写入在此目录下。默认为./,表示当前目录下。

REPLICATION

replicaof

主从复制选项,这里指定的是slave复制对应的master。如replicaof 192.168.20.2 6379。注,在低版本中,此选项可能为slaveof

masterauth

如果 master 需要密码认证,就在这里设置。

masteruser

在redis 6或更高版本,又或者使用acl方式来连接,那么默认用户无法执行psync或其他复制命令,那么就需要通过此选项来指定其他用户名。

replica-serve-stale-data

当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:

  1. 如果设置为’yes’(默认),则副本将会。仍然响应客户端请求,可能使用过期数据,或者如果是第一次同步,数据集可能为空。
  2. 如果slave-serve-stale-data设置为no,INFO,replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG,SUBSCRIBE, UNSUBSCRIBE,PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB,COMMAND, POST, HOST: and LATENCY命令之外的任何请求
    都会返回一个错误”SYNC with master in progress”。

一般保持默认的yes即可。

replica-read-only

作为从服务器,默认情况下是只读的(yes),可以修改成NO,用于写(不建议),会导致主从数据不一致。保持默认只读即可。

repl-diskless-sync

设置同步策略,是否使用socket方式复制数据。目前redis复制提供两种方式,disk和socket。如果新的slave连上来或者重连的slave无法部分同步,就会执行全量同步,master会生成rdb文件。

rdb文件传播的方式有两种:

  • Disk-backed:master端将RDB file写到disk,稍后再传送到slave端;
  • Diskless:无磁盘,master端直接将RDB file传到slave socket,不需要与disk进行交互。

使用磁盘支持的复制,在生成RDB文件时,只要当前生成RDB文件的子文件完成其工作,就可以将更多的副本排队并与RDB文件一起提供服务。如果在传输开始后使用无磁盘复制,到达的新副本将排队,当当前副本终止时,新的传输将开始。

对于慢磁盘和快(大带宽)网络,推荐使用无磁盘复制。

repl-diskless-sync-delay

当启用无磁盘复制时,可以配置服务器等待的延迟,以便生成通过套接字将RDB传输到副本的子服务器。这一点很重要,因为一旦传输开始,就不可能为到达的新副本提供服务,这些副本将排队等待下一次RDB传输,因此服务器等待延迟,以便让更多的副本到达。

延迟以秒为单位指定,默认为5秒。要完全禁用,只要设置它为o秒,传输将尽快开始。

警告:RDB无磁盘加载是实验性的。因为在这个设置副本没有立即在磁盘上存储一个RDB,它可能会导致数据丢失故障转移。

官方警告如下:

redis 6.0.4配置文件详解 - 图1

repl-ping-replica-period

slave以预定义的时间间隔将ping发送到master使用repl ping复制周期选项更改此间隔。默认值是10秒。一般无需改动。

repl-timeout

复制连接超时时间。master和slave都有超时时间的设置。master检测到slave上次发送的时间超过repl-timeout,即认为slave离线,清除该slave信息。slave检测到上次和master交互的时间超过repl-timeout,则认为master离线。需要注意的是repl-timeout需要设置一个比repl-ping-replica-period更大的值,不然会经常检测到超时。

repl-disable-tcp-nodelay

是否禁止复制tcp链接的tcp nodelay参数,可传递yes或者no。默认是no,即使用tcp nodelay。如果master设置了yes来禁止tcp nodelay设置,在把数据复制给slave的时候,会减少包的数量和更小的网络带宽。但是这也可能带来数据的延迟。默认我们推荐更小的延迟,但是在数据量传输很大的场景下,建议选择yes。

repl-backlog-size

复制缓冲区大小,这是一个环形复制缓冲区,用来保存最新复制的命令。这样在slave离线的时候,不需要完全复制master的数据,如果可以执行部分同步,只需要把缓冲区的部分数据复制给slave,就能恢复正常复制状态。缓冲区的大小越大,slave离线的时间可以更长,复制缓冲区只有在有slave连接的时候才分配内存。没有slave的一段时间,内存会被释放出来,默认1mb。

repl-backlog-ttl

master没有slave一段时间会释放复制缓冲区的内存,repl-backlog-ttl用来设置该时间长度。单位为秒。

replica-priority

此配置与redis的哨兵机制有关,当master不可用,Sentinel(哨兵)会根据slave的优先级选举一个master。最低的优先级的slave,当选master(比如有优先级为10,100,25,这三个节点,那么优先级为10的将为master)。而配置成0,永远不会被选举。

min-replicas-to-write

redis提供了可以让master停止写入的方式,如果配置了min-replicas-to-write,健康的slave的个数小于N,mater就禁止写入。master最少得有多少个健康的slave存活才能执行写命令。这个配置虽然不能保证N个slave都一定能接收到master的写操作,但是能避免没有足够健康的slave的时候,master不能写入,以此来避免数据丢失。设置为0是关闭该功能。

min-replicas-max-lag

延迟小于min-replicas-max-lag秒的slave才认为是健康的slave。设置为0表示禁用此配置。

security

安全方面在redis 6.0.x版本中新增acl规则,若有兴趣,可以参考官方文档

clients

maxclients

设置连接的客户端的最大数量。默认情况下,这个限制被设置为10000个客户端,但是,如果Redis服务器不能保证进程文件限制允许指定的限制,允许的客户端最大数量被设置为当前文件限制- 32(因为Redis保留了一些内部使用的文件描述符)一旦达到限制,Redis将关闭所有新的连接发送一个错误’max number of clients reached’。

memory management

maxmemory

redis配置的最大内存容量。当内存满了,需要配合maxmemory-policy策略进行处理。注意slave的输出缓冲区是不计算在maxmemory内的。所以为了防止主机内存使用完,建议设置的maxmemory需要更小一些。如:

  1. maxmemory 20gb

maxmemory-policy

maxmemory策略:当达到maxmemory时,Redis将如何选择删除这些数据。

删除策略如下:

  • volatile-lru:利用LRU算法移除设置过过期时间的key。
  • allkeys-lru:利用LRU算法移除任何key。
  • volatile-lfu:利用LFU算法移除设置过过期时间的key。
  • allkeys-lfu:利用LFU算法移除任何key。
  • volatile-random:随机移除设置过过期时间的key。
  • allkeys-random:随机删除任何一个key。
  • volatile-ttl:移除即将过期的key,根据最近过期时间来删除(辅以TTL)。
  • noeviction:不移除任何key,只是返回一个写错误。

注:LRU表示最近最少使用算法,LFU表示最少使用频率。

上面的这些驱逐策略,如果redis没有合适的key驱逐,对于写命令,还是会返回错误。redis将不再接收写请求,只接收get请求。写命令包括:set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort。

默认maxmemory-policy值为noeviction

maxmemory-samples

使用lru、lfu或者ttl淘汰算法,从需要淘汰的列表中随机选择sample个key,选出闲置时间最长的key移除。

默认值为5,也是最佳值,若设置为3,可能会更快,但是可能不太精准,若设置为10,可能更精准,但是需要消耗更多的cpu资源。

replica-ignore-maxmemory

从redis5开始,默认情况下副本会忽略它的maxmemory设置(除非它在故障转移后被提升为master或手动)。这意味着键的回收将由主服务器处理,在主服务器端键被回收时将DEL命令发送给副本。此值默认为yes,不建议更改。

LAZY FREEING

此处主要是指定以非阻塞的方式删除键(一般的del指令为阻塞式删除)。此选项中建议所有配置保持默认(开启非阻塞删除)即可。默认如下:

  1. lazyfree-lazy-eviction no
  2. lazyfree-lazy-expire no
  3. lazyfree-lazy-server-del no
  4. replica-lazy-flush no
  5. lazyfree-lazy-user-del no

threaded I/O

io-threads

redis大部分是单线程的,但有些时候也是多线程处理事件的,如解除链接、缓慢的I/o访问和其他在端线程上执行的操作。

现在它也可以处理Redis客户端套接字读写在不同的I/O线程。特别是写代码运行的很慢,通常Redis用户使用流水线来提高每个核的Redis性能,并衍生多个实例来扩大规模。使用I/O线程,它可以很容易地加速两倍的Redis没有诉诸于管道或切分的实例。

此选项默认是禁用的,如果需要开启,那么你的cpu核心数最少要有4个,然后将io-threads的值设置为2或者3(至少要保留一个核心给系统使用), 这个值最高不要超过8个,因为性能无法继续提升了。

将此值设置为1的话,那么redis会和之前一样,使用单线程工作。

io-threads-do-reads

当启用I/O线程时,我们只使用线程进行写操作,也就是执行写(系统调用并将客户端缓冲区传输到套接字。然而,也有可能启用线程读取和协议解析使用,所以io-threads-do-reads建议设置为yes。

APPEND ONLY MODE

appendonly

默认情况下,Redis异步转储数据集到磁盘上。这种模式在许多应用程序中已经足够好了,但Redis进程的问题或断电可能会导致几分钟的写丢失。

所以我们可以通过appendonly选项开启aof数据持久化,这样,数据更安全些。

  1. appendonly yes # 此值默认为no

关于rdb和aof持久化的区别,可以自行百度。一般情况下,我们会同时开启rdb和aof这两种持久化方式,redis在重启时,会优先读取aof持久化文件。

appendfilename

定义aof持久化的文件名。

appendfsync

此配置用于定义aof持久化采用哪种策略。

aof数据持久化有以下几种策略:

  • always:表示每次写入都执行fsync,以保证数据同步到磁盘,但会影响性能,线上不建议采用。
  • everysec:表示每秒执行依次fsync操作,也就是说一旦宕机最多丢失1秒的数据,如果对数据不是那么敏感,建议采用这种方式。
  • no:表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。但线上不建议采用,因为最长的同步周期可能有30s。

默认采用everysec策略,也是官方推荐的一个折中策略。

no-appendfsync-on-rewrite

在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no。

auto-aof-rewrite-percentage

aof自动重写配置。当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程,也可以将此值设置为0,表示禁用重写。

auto-aof-rewrite-min-size

设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。

aof-load-truncated

aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=ordered选项(redis宕机或者异常终止不会造成尾部不完整现象。)出现这种现象,可以选择让redis退出,或者导入尽可能多的数据。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。一般此值保持默认的yes即可。

aof-use-rdb-preamble

抱歉,这个配置的注释我翻译不通,大概意思就是开启aof和rdb这两种持久化方式时,此值设置为yes,一般无需关注此值,保持默认yes即可。

lua-time-limit

定义lua脚本执行的最大时间,如果达到最大时间限制(毫秒),redis会记个log,然后返回error。当一个脚本超过了最大时限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。第一个可以杀没有调write命令的东西。要是已经调用了write,只能
用第二个命令杀。

redis cluster

cluster-enabled

设置为yes则表示开启实例的群集默认,那么此实例就可以加入到其他集群。

cluster-config-file

每个集群节点都有一个集群配置文件。此文件不是我们写的。它是由Redis节点创建和更新的每个Redis集群节点时自动创建及过更新的一个文件。以群集的方式启动实例后,redis会将此文件写入到dir配置项执行的目录下。

cluster-node-timeout

节点互连超时的阀值。集群节点超时毫秒数。

cluster-replica-validity-factor

在进行故障转移的时候,全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了,导致数据过于陈旧,这样的slave不应该被提升为master。该参数就是用来判断slave节点与master断线的时间是否过长。

判断方法是: 比较slave断开连接的时间和(node-timeout * slave-validity-factor) + repl-ping-slave-period,如果节点超时时间为三十秒,并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移。

cluster-migration-barrier

master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。

默认值是1(只有当它们的主副本保留至少一个副本时,副本才会迁移)。要禁用迁移,只需将其设置为一个非常大的值。可以设置为0,但只在调试时有用,在生产中很危险。

cluster-require-full-coverage

默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。

总言而之,保持默认的yes即可。

cluster-replica-no-failover

当将此选项设置为yes时,可防止副本在主服务器出现故障时试图转移其主服务器。但是,如果被迫,主服务器仍然可以执行手动故障转移。

cluster-allow-reads-when-down

当将此选项设置为yes时,只要集群认为自己拥有这些槽,就允许节点在集群处于down状态时提供读流量。

这在两种情况下有用。第一种情况是当应用程序在节点故障或网络分区期间不需要数据的一致性时,其中一个例子是缓存,只要节点有数据,它就应该能够提供数据。

CLUSTER DOCKER/NAT support

此处共有以下三个配置选项(正常情况下无需配置这几个选项):

  1. #*群集公告IP
  2. #*群集公告端口
  3. #*群集公告总线端口
  4. # Example:
  5. #
  6. # cluster-announce-ip 10.1.1.5
  7. # cluster-announce-port 6379
  8. # cluster-announce-bus-port 6380

slow log

slowlog-log-slower-than

slow log是用来记录redis运行中执行比较慢的命令耗时。当命令的执行超过了指定时间,就记录在slow log中,slow log保存在内存中,所以没有IO操作。

执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令。

slowlog-max-len

慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删掉。这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存。

latency-monitor-threshold

延迟监控功能是用来监控redis中执行比较缓慢的一些操作,用LATENCY打印redis实例在跑命令时的耗时图表。只记录大于等于latency-monitor-threshold设置的值的操作。0的话,就是关闭监视。默认延迟监控功能是关闭的,如果你需要打开,也可以通过CONFIG SET命令动态设置。

advanced config

hash-max-ziplist-entries

数据量小于等于hash-max-ziplist-entries的用ziplist,大于hash-max-ziplist-entries用hash。

hash-max-ziplist-value

value大小小于等于hash-max-ziplist-value的用ziplist,大于hash-max-ziplist-value用hash。

以上两个选项一般保持默认即可。

list-max-ziplist-size

  • -5:最大大小:64 KB<—不建议用于正常工作负载
  • -4:最大大小:32 KB<—不推荐
  • -3:最大大小:16 KB<—可能不推荐
  • -2:最大大小:8kb<—良好
  • -1:最大大小:4kb<—良好

推荐保持默认的-2。以节省空间。

list-compress-depth

定义列表是否压缩,可选值如下(截取官方配置文件中的注释):

  1. # 0: disable all list compression
  2. # 1: depth 1 means "don't start compressing until after 1 node into the list,
  3. # going from either the head or tail"
  4. # So: [head]->node->node->...->node->[tail]
  5. # [head], [tail] will always be uncompressed; inner nodes will compress.
  6. # 2: [head]->[next]->node->node->...->node->[prev]->[tail]
  7. # 2 here means: don't compress head or head->next or tail->prev or tail,
  8. # but compress all nodes between them.
  9. # 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]
  10. # etc.

写到这里,我终于失去了继续写下去的耐心,不再注重排版了,就这样吧。

  1. # 数据量小于等于set-max-intset-entries用iniset,大于set-max-intset-entries用set
  2. set-max-intset-entries 512
  3. #数据量小于等于zset-max-ziplist-entries用ziplist,大于zset-max-ziplist-entries用zset
  4. zset-max-ziplist-entries 128
  5. #value大小小于等于zset-max-ziplist-value用ziplist,大于zset-max-ziplist-value用zset
  6. zset-max-ziplist-value 64
  7. #value大小小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),大于hll-sparse-max-bytes使
  8. 用稠密的数据结构(dense)。一个比16000大的value是几乎没用的,建议的value大概为3000。如果对CPU
  9. 求不高,对空间要求较高的,建议设置到10000左右
  10. hll-sparse-max-bytes 3000
  11. #宏观节点的最大流/项目的大小。在流数据结构是一个基数
  12. #树节点编码在这项大的多。利用这个配置它是如何可能#大节点配置是单字节和
  13. #最大项目数,这可能包含了在切换到新节点的时候
  14. # appending新的流条目。如果任何以下设置来设置
  15. # ignored极限是零,例如,操作系统,它有可能只是一集
  16. 通过设置限制最大#纪录到最大字节0和最大输入到所需的值
  17. stream-node-max-bytes 4096
  18. stream-node-max-entries 100
  19. #Redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,可以降低内存的使用。当你
  20. 的使用场景中,有非常严格的实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置
  21. no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存
  22. activerehashing yes
  23. ##对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端。
  24. #对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,normal
  25. client默认取消限制,因为如果没有寻问,他们是不会接收数据的
  26. client-output-buffer-limit normal 0 0 0
  27. #对于slave client和MONITER client,如果client-output-buffer一旦超过256mb,又或者超过64mb持续
  28. 60秒,那么服务器就会立即断开客户端连接
  29. client-output-buffer-limit replica 256mb 64mb 60
  30. #对于pubsub client,如果client-output-buffer一旦超过32mb,又或者超过8mb持续60秒,那么服务器就
  31. 会立即断开客户端连接
  32. client-output-buffer-limit pubsub 32mb 8mb 60
  33. # 这是客户端查询的缓存极限值大小
  34. # client-query-buffer-limit 1gb
  35. #在redis协议中,批量请求,即表示单个字符串,通常限制为512 MB。但是您可以更改此限制。
  36. # proto-max-bulk-len 512mb
  37. #redis执行任务的频率为1s除以hz
  38. hz 10
  39. #当启用动态赫兹时,实际配置的赫兹将用作作为基线,但实际配置的赫兹值的倍数
  40. #在连接更多客户端后根据需要使用。这样一个闲置的实例将占用很少的CPU时间,而繁忙的实例将反应更灵敏
  41. dynamic-hz yes
  42. #在aof重写的时候,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。这
  43. 对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值
  44. aof-rewrite-incremental-fsync yes
  45. #在rdb保存的时候,如果打开了rdb-save-incremental-fsync开关,系统会每32MB执行一次fsync。这
  46. 对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值
  47. rdb-save-incremental-fsync yes

ACTIVE DEFRAGMENTATION

  1. # 已启用活动碎片整理
  2. # activedefrag yes
  3. # 启动活动碎片整理的最小碎片浪费量
  4. # active-defrag-ignore-bytes 100mb
  5. # 启动活动碎片整理的最小碎片百分比
  6. # active-defrag-threshold-lower 10
  7. # 我们使用最大努力的最大碎片百分比
  8. # active-defrag-threshold-upper 100
  9. # 以CPU百分比表示的碎片整理的最小工作量
  10. # active-defrag-cycle-min 5
  11. # 在CPU的百分比最大的努力和碎片整理
  12. # active-defrag-cycle-max 75
  13. #将从中处理的set/hash/zset/list字段的最大数目
  14. #主词典扫描
  15. # active-defrag-max-scan-fields 1000