bind 127.0.0.1 -::1 #监听地址,可以用空格隔开后监听IP
protected-mode yes #redis3.2之后加入的新特性,在没有设置bin ip和密码的时候redis至允许访问127.0.0.1:6379,可以远程连接,但当访问将提示警告信息并拒绝远程访问
port 6379 #监听端口,默认6379/tcp
tcp-backlog 511 #三次握手的时候server端收到client ack确认号之后的队列值,即全连接队列长度
timeout 0 #客户端和Redis服务端的连接超时时间,默认是0,表示永不超时
tcp-keepalive 300 #tcp 会话报错时间300S
daemonize no #默认no,即直接运行redis-server程序时,不作为守护进程运行,而是以前台方式运行,如果想在后台运行需修改成yes,当redis作为守护进程运行的时候,它会写一个pid到/var/run/redis.pid文件
pidfile /var/run/redis_6379.pid #pid文件路径,可以修改
loglevel notice #日志级别
logfile "" #日志路径,示例:logfile "/apps/redis/log/redis_6379.log"
databases 16 #设置数据库数量,默认:0-15,共16个库
always-show-logo no #在启动redis时是否显示或在日志中记录redis的logo
set-proc-title yes #
proc-title-template "{title} {listen-addr} {server-mode}"
stop-writes-on-bgsave-error yes #默认为yes时,可能会因空间满等原因快照无法保存出错时,会禁止redis写入操作,生产建议为no
#此项值针对配置文件中的自动save有效
rdbcompression yes #持久化到rdb文件时,是否压缩,"yes"为压缩,"no"则反之
rdbchecksum yes #是否对备份文件开启rc64校验,默认时开启
dbfilename dump.rdb #快照文件名
rdb-del-sync-files no
dir ./ #快照文件保存路径,示例:dir "/apps/redis/data"
#主从复制相关
#replicaof <masterip> <masterport> #指定复制的master主机地址和端口,5.0版之前的指令为salveof
# masterauth <master-password> #指定复制的master主机的密码
replica-serve-stale-data yes #当从库失去连接或者复制正在进行,从库有两种运行方式
#1.设置为yes(默认),从库会继续响应客户端的读请求,此为建议值
#2.设置为no,除去特定命令外的任何请求都会返回一个错误"SYNC with master in progress"
replica-read-only yes #是否设置从库制度,建议值为yes,否则主库同步从库时可能会覆盖数据,造成数据丢失
repl-diskless-sync no #是否使用socket方式复制数据(无盘同步),新slave第一次连接master时需要做数据的全量同步,redis server就要从内存dump出新的rdb文件,然后从master传到slave,有两种方式把rdb文件传输到客户端:
#1.基于(disk-backed):为no时,master创建一个新进程dump生产rdb磁盘文件,rdb完成之后由父进程(即主进程)将rdb文件发送给slaves,此为默认值,也是生产建议值
#2.基于socket(diskless):master创建一个新进程直接dump rdb至slave的网络socket,不经过主进程和硬盘
#推荐使用基于硬盘(为no),因为rdb文件创建后,可以同时传输给更多的slave,但是基于socket(为yes),新slave连接到master之后需要逐个同步数据,只有当磁盘i/o较慢且网络较快时,可用diskless(yes),否则一般建议使用磁盘(no)
repl-diskless-sync-delay 5 #diskless时复制的服务器等待延迟时间,设置0为关闭,在延迟时间达到的客户端,会一起通过diskless方式同步数据,但是一旦复制开始,master节点不会再接收新slave的复制请求,直到下一次同步开始才接收新请求。即无法为延迟时间后到达的新副本提供服务,新副本将排队等待下一次rdb传输,因此服务器会等待一段时间才能让更多副本到达。推荐值30-60
repl-ping-replica-period 10 #slave根据master指定的时间进行周期性的ping master,用于监控master状态,默认10s
repl-disable-tcp-nodelay no #是否再slave套接字发送sync之后禁用tcp_nodelay,如果选择‘yes’,redis将合并多个报文为一个大的报文,从而使用更少数量的包向slaves发送数据,但是将使数据传输到slave上有延迟,linux内核的默认配置会达到40毫秒,如果‘no’,数据传输到slave的延迟将会减少,但要使用更多的带宽
appendonly no #是否开启aof日志记录,默认redis使用的是rdb方式持久化,这周方式在许多应用中已经足够用了,但是redis如果中途宕机,会导致可能有几分钟的数据丢失(取决于dump数据的间隔时间),根据save策略来进行持久化,append only file是另一种持久化方式,可以提供更好的持久化特性,redis会把每次写入的数据在接收后都写入appendonly.aof文件,每次启动时redis都会先把这个文件的数据读入内存里,先忽略rdb文件,默认不启用
appendfilename "appendonly.aof" #文本文件aof的文件名,存放在dir指令指定的目录中
appendfsync everysec #aof持久化的策略
#no表示由操作系统保证数据同步到磁盘,Linux的默认fsync策略时30秒,最多丢失30s数据
#always表示每次写入都执行fsync,以保证数据同步到磁盘,安全性高,性能较差
#everysec表示每秒执行异常fsync,可能会导致丢失1s数据,此为默认值,也是生产建议值
no-appendfsync-on-rewrite no #在aof rwrite期间,是否对aof新记录的append暂存使用文件同步策略,主要考虑磁盘IO开支和请求阻塞时间
#默认为no时,表示“不暂存”,新的aof记录仍然会被立即同步到磁盘,时最安全的方式,不会丢失数据,但是要忍受阻塞的问题
#为yes时,相当于将appendfsync设置为no,这说明并没有执行磁盘操作,只是写入了缓冲区,因此这样并不会造成阻塞(因为没有竞争磁盘),但是如果这个时候redis挂掉,就会丢失数据。丢失多少数据呢?Linux的默认fsync策略时30秒,最大会丢失30s的数据,但由于yes性能较好而且会避免出现阻塞因此比较推荐
auto-aof-rewrite-percentage 100 #当aof log增长超过指定百分比例时,重写AOF文件,设置为0表示不自动重写aof日志,重写时为了使aof体积保持最小,但还可以确保保存最完整的数据
auto-aof-rewrite-min-size 64mb #触发aof rewrite的最小文件大小
aof-load-truncated yes #是否加载由于某些原因导致的末尾异常的AOF文件(主进程被kill/断电等),建议yes
aof-use-rdb-preamble yes #redis4.0新增red-aof混合持久化格式,在开启了这个功能后,aof重写产生的文件将同时包含RDB格式的内容和AOF格式的内容,其中RDB格式的内容用于记录已有的数据,而AOF格式的内容则用于记录最近发送了变化的数据,这样redis就可以同时兼有rdb持久化和aof持久化的优点(即能据快速的生成重写文件,也能够在出现问题时快速的载入数据),默认为no,即不启用此功能
lua-time-limit 5000 #lua脚本的最大执行时间,单位为毫秒
slowlog-log-slower-than 10000 #以微秒为单位的慢日志记录,为附属会禁用慢日志,为0会记录每个命令操作。默认为10ms,一般一条命令执行都在微秒级,生产建议设置为1ms-10ms之间
slowlog-max-len 128 #最多记录多少条慢日志的保存队列长度,达到此长度后,记录新命令会将最旧的命令从命令队列中删除,以此滚动删除,即,先进先出,队列固定长度,默认128,值偏小,生产建议设置为1000以上