redis配置文件的讲解

时间:2021-09-11 00:31:38
//redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes时,启用守护进程
daemonize yes
//PID文件
pidfile redis-book-6399.pid
//端口
port 6399
//当客户端闲置多长时间,关闭连接,单位秒
timeout 216000
//如果值非0,单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是60S。
tcp-keepalive 0
//Redis总共支持四个级别:debug、verbose、notice、warning。
//Debug:记录很多信息,用于开发和测试;
//Varbose:有用的信息,不像debug会记录那么多;
//Notice:普通的verbose,常用于生产环境;
//Warning:只有非常重要或者严重的信息会记录到日志;
//默认是notice级别。
loglevel notice
//日志存储的路劲
logfile "redis-book-6399.log"
//可用的数据库数,默认值为16,默认数据库为0,数据库范围在0-(database-1)之间
databases 1
//当持久化出现错误之后,是否继续提供写服务
stop-writes-on-bgsave-error yes
//持久化到RDB文件时,是否压缩,“yes”为压缩,“no”则反之
rdbcompression yes
//读取和写入的时候是否支持CRC64校验,默认是开启的
rdbchecksum yes
//镜像文件的名字
dbfilename redis-6399-dump.rdb
//当前工作目录,配置文件和镜像文件等都在此目录下
dir redis/data/
//当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置“yes”,slave服务器可以继续接受客户端的请求,否则,会返回给请求的客户端如下信息“SYNC with master in progress”
slave-serve-stale-data yes
//是否允许slave服务器节点只提供读服务
slave-read-only no
//指定向slave同步数据时,是否禁用socket的NO_DELAY选 项。若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的时间。若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。 通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。
repl-disable-tcp-nodelay no
//指定slave的优先级。在不只1个slave存在的部署环境下,当master宕机时,Redis Sentinel会将priority值最小的slave提升为master。需要注意的是,若该配置项为0,则对应的slave永远不会自动提升为master。
slave-priority 100
//开启append only 模式之后,redis 会把所接收到的每一次写操作请求都追加到appendonly.aof 文件中,当redis 重新启动时,会从该文件恢复出之前的状态。但是这样会造成appendonly.aof 文件过大,所以redis 还支持了BGREWRITEAOF 指令,对appendonly.aof 进行重新整理。默认是不开启的。
appendonly no
//设置aof的同步频率,有三种选择always、everysec、no,默认是everysec表示每秒同步一次。
appendfsync everysec
//指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写afo文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。
no-appendfsync-on-rewrite no
//可以用这种方式关掉非常危险的命令,如FLUSHALL这个命令,它清空整个 Redis 服务器的数据,而且不用确认且从不会失败
rename-command FLUSHALL ""
//指定Redis重写aof文件的条件,默认为100,表示与上次rewrite的aof文件大小相比,当前aof文件增长量超过上次afo文件大小的100%时,就会触发background rewrite。若配置为0,则会禁用自动rewrite
auto-aof-rewrite-percentage 100
//指定触发rewrite的aof文件大小。若aof文件小于该值,即使当前文件的增量比例达到auto-aof-rewrite-percentage的配置值,也不会触发自动rewrite。即这两个配置项同时满足时,才会触发rewrite。
auto-aof-rewrite-min-size 64mb
//一个Lua脚本最长的执行时间,单位为毫秒,如果为0或负数表示无限执行时间,默认为5000
lua-time-limit 5000
//下面的时间单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录所有命
slowlog-log-slower-than 10000
//慢日志长度 这个长度没有限制。只是要主要会消耗内存。你可以通过 SLOWLOG RESET 来回收内存。
slowlog-max-len 128
//带一个由0到多个字符组成的字符串参数。空字符串意思是通知被禁用
notify-keyspace-events ""
//针对hash类型,只要hash的filed在这个范围内使用紧凑存储,这可以节约存储,也是为什么要尽量使用hash少使用string的理由,特别是在原子计数的时候,对一个用户可能要记录很多数量,一定要采用hash的策略,这是非常有用的。当然这个值绝不是越大越好,通常不要超过1024
hash-max-ziplist-entries 512
//hash的value的大小,在这个大小内会使用紧凑存储。这个值也不是越大越好,最好不要超过512。
hash-max-ziplist-value 256
//下面这两个参数和hash用法是一样的 ,但是针对list
list-max-ziplist-entries 512
list-max-ziplist-value 64
// set有一种特殊编码的情况:当set数据全是十进制64位有符号整型数字构成的字符串时。下面这个配置项就是用来设置set使用这种编码来节省内存的最大长度。
set-max-intset-entries 512
//与hash和list相似,有序集合也可以用一种特别的编码方式来节省大量空间。这种编码只适合长度和元素都小于下面限制的有序集合
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
//指定是否激活重置哈希,默认为开启
activerehashing yes
//Redis 的output buffer限制 用来强行断开那么些读取速度比较慢的客户端(比如发布订阅模式,订阅者不能像发布者发布消息那样很快的接受到订阅信息),
//3种不同的客户端:
//normal -> normal clients
//slave  -> slave clients and MONITOR clients
//pubsub -> 客户端至少订阅了一个频道或者模式
//基本语法为:
//client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
//当达到hard limit 限制的时候,server立即断开连接,或者当达到soft limit限制后,持续时间达到 soft seconds 。
//把参数都变为0,就不会有限制。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 1024mb 256mb 120
client-output-buffer-limit pubsub 32mb 8mb 60
//Redis 调用内部函数来执行后台task,比如关闭已经timeout连接,删除过期的keys并且永远不会被访问到的,
//执行频率根据 hz 后面的值来确定。在Redis 比较空闲的时候,提高这个值,能充分利用CPU,让Redis相应速度更快,
//可取范围是1-500 ,建议值为 1--100
hz 10
//当子进程重写AOF文件,以下选项开启时,AOF文件会每产生32M数据同步一次 有助于更快写入文件到磁盘避免延迟
aof-rewrite-incremental-fsync yes
//增加了部分复制功能,在处理网络闪断的情况下是非常有效的,这也是出Redis集群之前需要提供的基本保证。默认1Mb的repl_backlog在访问量大的情况下可能效果未必理想,这个可以通过更改配置文件中的repl-backlog-size的值实现repl_backlog的大小的调整。还有repl_backlog在没有Slave的情况下过多久再释放的时间阈值也可以通过配置文件中的repl-backlog-ttl进行调整
repl-backlog-size 20mb
//当master在一段时间内不再与任何slave连接,backlog将会释放。以下选项配置了从最后一个slave断开开始计时多少秒后,backlog缓冲将会释放。0表示永不释放backlog
repl-backlog-ttl 86400