#按需配置
#加载个性化的配置
#include /path/local.conf
#按需修改
#绑定的ip地址,多个IP空格隔开
#如果是master bind 127.0.0.1 1.1.1.1 master.ip
#如果是slave bind 127.0.0.1 1.1.1.1
bind 127.0.0.1 1.1.1.1
#保护模式
protected-mode yes
#按需修改
#当前实例监听的端口
port 6379
#tcp监听的最大容纳数量,小于系统内核
tcp-backlog 128
#指定 unix socket 的路径。
# unixsocket /tmp/redis.sock
# unixsocketperm 755
#空闲的客户端超时时间/s
#0表示不设超时时间
timeout 259200
#tcp连接保活查询时间
tcp-keepalive 300
#daemon模式
daemonize yes
#是否打开记录syslog功能
# syslog-enabled no
#syslog的标识符
# syslog-ident redis
#日志的来源、设备
# syslog-facility local0
#
supervised auto
#按需修改
#pidfile文件的绝对路径
pidfile /data/redis/redis-6379.pid
#日志级别,生产环境使用notice
loglevel notice
#按需修改
#日志记录的文件绝对路径
logfile "/data/logs/redis/redis-6379.log"
#多少个键空间,相当于多少个数据库
databases 16
#后台持久化的配置
#900s内至少有1个key变化,保存
#300s内至少10个key变化,保存
#60s内至少有10000个key变化,保存
save 900 1
save 300 10
save 60 10000
#默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,
#这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,
#否则就会没人注意到灾难的发生。
#如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。
#如果有自己安装了靠谱的监控,可设置为no
stop-writes-on-bgsave-error yes
#rdb持久化开启压缩
rdbcompression yes
#是否校验rdb文件
rdbchecksum yes
#按需修改
#持久化的文件名称与目录
dbfilename redis-6379.rdb
dir /data/redis/
#######################主从模式##########################
#按需修改
#当作为slave时配置
#master的ip和port以及密码
# slaveof
# masterauth
#当一个 slave 与 master 失去联系,或者复制正在进行的时候,
# slave 可能会有两种表现:
# 1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,
# 或者数据可能是空的在第一次同步的时候
# 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,
# slave 都将返回一个 "SYNC with master in progress" 的错误
slave-serve-stale-data yes
#slave只读模式
slave-read-only yes
#是否使用socket方式复制数据。目前redis复制提供两种方式,disk和socket。
#如果新的slave连上来或者重连的slave无法部分同步,就会执行全量同步,
#master会生成rdb文件。有2种方式:disk方式是master创建一个新的进程把rdb文件保存到磁盘,
#再把磁盘上的rdb文件传递给slave。socket是master创建一个新的进程,
#直接把rdb文件以socket的方式发给slave。disk方式的时候,
#当一个rdb保存的过程中,多个slave都能共享这个rdb文件。
#socket的方式就的一个个slave顺序复制。在磁盘速度缓慢,网速快的情况下推荐用socket方式
repl-diskless-sync no
#diskless复制的延迟时间,防止设置为0。一旦复制开始,
#节点不会再接收新slave的复制请求直到下一个rdb传输。所以最好等待一段时间,等更多的slave连上来
repl-diskless-sync-delay 5
#slave在一个预定义的时间发送ping命令到server
# repl-ping-slave-period 10
#主从复制过期时间
#这个值一定要比 repl-ping-slave-period 大
#repl-timeout 60
#是否禁止复制tcp链接的tcp nodelay参数,可传递yes或者no。
#默认是no,即使用tcp nodelay。如果master设置了yes来禁止tcp nodelay设置,
#在把数据复制给slave的时候,会减少包的数量和更小的网络带宽。
#但是这也可能带来数据的延迟。默认我们推荐更小的延迟,但是在数据量传输很大的场景下,建议选择yes
repl-disable-tcp-nodelay no
#复制缓冲区大小,这是一个环形复制缓冲区,用来保存最新复制的命令。
#这样在slave离线的时候,不需要完全复制master的数据,如果可以执行部分同步,
#只需要把缓冲区的部分数据复制给slave,就能恢复正常复制状态。
#缓冲区的大小越大,slave离线的时间可以更长,
#复制缓冲区只有在有slave连接的时候才分配内存。没有slave的一段时间,内存会被释放出来,默认1m
# repl-backlog-size 1mb
#在某写时间,master不再连接slaves,backlog将被释放
#0表示不释放
# repl-backlog-ttl 3600
#当master不正常工作时,推举slave作为新的master
#值越小越优先,但是0不可能被选中
slave-priority 100
#redis提供了可以让master停止写入的方式,如果配置了min-slaves-to-write,
#健康的slave的个数小于N,mater就禁止写入。
#master最少得有多少个健康的slave存活才能执行写命令。
#这个配置虽然不能保证N个slave都一定能接收到master的写操作,
#但是能避免没有足够健康的slave的时候,master不能写入来避免数据丢失。设置为0是关闭该功能
# min-slaves-to-write 3
#延迟小于min-slaves-max-lag秒的slave才认为是健康的slave
# min-slaves-max-lag 10
# slave-announce-ip 5.5.5.5
# slave-announce-port 1234
#按需修改
#访问redis的密码,如果是slave,不设置密码
requirepass root
#命令重新命名
# rename-command CONFIG ""
#最大可以开启的客户端连接数,默认10000
#一旦到达最大连接,将会断开所有的连接
# maxclients 10000
#按需修改
#最大使用的内存
#如果设置这个值,当缓存容量达到时,使用策略来移除key
#maxmemory 3000mb
#最大内存策略
#volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
#allkeys-lru :删除不经常使用的key
#volatile-random :随机删除即将过期的key
#allkeys-random :随机删除一个key
#volatile-ttl :删除即将过期的key
#noeviction :不过期,写操作返回报错
# maxmemory-policy noeviction
#默认随机选择5个key,从中淘汰最不常用的
# maxmemory-samples 5
################################ appendonly mode ######################
#是否在每次更新操作后进行日志记录,如果不开启,
#可能会在断电时导致一段时间内的数据丢失。
#因为redis本身同步数据文件是按上面save条件来同步的,
#所以有的数据会在一段时间内只存在于内存中。默认值为no
appendonly yes
#更新日志文件名
appendfilename "appendonly-6379.aof"
#更新日志条件,共有3个可选值。no表示等操作系统进行数据缓存同步到磁盘,
#always表示每次更新操作后手动调用fsync()将数据写到磁盘,
#everysec表示每秒同步一次(默认值)
appendfsync everysec
#当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件
no-appendfsync-on-rewrite no
#aof自动重写配置。当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,
#即当aof文件增长到一定大小的时候Redis能够调用bgrewriteaof对日志文件进行重写。
#当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程
auto-aof-rewrite-percentage 100
#设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写
auto-aof-rewrite-min-size 64mb
#aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。
#重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上
#data=ordered选项(redis宕机或者异常终止不会造成尾部不完整现象。)
#出现这种现象,可以选择让redis退出,或者导入尽可能多的数据。
#如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。
#如果是no,用户必须手动redis-check-aof修复AOF文件才可以
aof-load-truncated yes
################################ LUA SCRIPTING ###############################
#如果达到最大时间限制(毫秒),redis会记个log,然后返回error。
#当一个脚本超过了最大时限。只有SCRIPT KILL和SHUTDOWN NOSAVE可以用。
#第一个可以杀没有调write命令的东西。
#要是已经调用了write,只能用第二个命令杀
lua-time-limit 5000
################################ REDIS CLUSTER ###############################
#激活集群
# cluster-enabled yes
#集群配置文件,不需要手动配置,运行时生成并更新
# cluster-config-file nodes-6379.conf
#节点互连超时的阀值。集群节点超时毫秒数
# cluster-node-timeout 15000
#在进行故障转移的时候,全部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秒,即如果超过10秒slave将不会尝试进行故障转移
# cluster-slave-validity-factor 10
#master的slave数量大于该值,slave才能迁移到其他孤立master上,
#如这个参数若被设为2,那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移
# cluster-migration-barrier 1
#默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。
#设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,
#这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致
# cluster-require-full-coverage yes
################################## SLOW LOG ###################################
#执行时间超过则会记录到日志,单位微秒
#负数时间会禁用慢查询日志,而0则会强制记录所有命令,默认设置为0.01s
slowlog-log-slower-than 10000
#慢查询日志长度。当一个新的命令被写进日志的时候,最老的那个记录会被删掉。
#这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存
slowlog-max-len 128
################################ LATENCY MONITOR ##############################
#延迟监控功能是用来监控redis中执行比较缓慢的一些操作,用LATENCY打印redis实例在跑命令时的耗时图表。
#只记录大于等于下边设置的值的操作。0的话,就是关闭监视。默认延迟监控功能是关闭的,
#如果你需要打开,也可以通过CONFIG SET命令动态设置
latency-monitor-threshold 0
############################# EVENT NOTIFICATION ##############################
#按需修改
#键空间通知
notify-keyspace-events ""
############################### ADVANCED CONFIG ###############################
#数据量小于等于hash-max-ziplist-entries的用ziplist,大于hash-max-ziplist-entries用hash
hash-max-ziplist-entries 512
#value大小小于等于hash-max-ziplist-value的用ziplist,大于hash-max-ziplist-value用hash
hash-max-ziplist-value 64
#
list-max-ziplist-size -2
#
list-compress-depth 0
#数据量小于等于set-max-intset-entries用iniset,大于set-max-intset-entries用set
set-max-intset-entries 512
#数据量小于等于zset-max-ziplist-entries用ziplist,大于zset-max-ziplist-entries用zset
zset-max-ziplist-entries 128
#value大小小于等于zset-max-ziplist-value用ziplist,大于zset-max-ziplist-value用zset
zset-max-ziplist-value 64
#value大小小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),
#大于hll-sparse-max-bytes使用稠密的数据结构(dense)。
#一个比16000大的value是几乎没用的,建议的value大概为3000。
#如果对CPU要求不高,对空间要求较高的,建议设置到10000左右
hll-sparse-max-bytes 3000
#是否激活rehashing,默认开启
#Redis将在每100毫秒时使用1毫秒的CPU时间来对redis的hash表进行重新hash,
#可以降低内存的使用。当你的使用场景中,有非常严格的实时性需要,
#不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。
#如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存
activerehashing yes
#对客户端输出缓冲进行限制可以强迫那些不从服务器读取数据的客户端断开连接,用来强制关闭传输缓慢的客户端
#对于normal client,第一个0表示取消hard limit,第二个0和第三个0表示取消soft limit,
#normal client默认取消限制,因为如果没有寻问,他们是不会接收数据的
client-output-buffer-limit normal 0 0 0
#对于slave client和MONITER client,如果client-output-buffer一旦超过256mb,
#又或者超过64mb持续60秒,那么服务器就会立即断开客户端连接
client-output-buffer-limit slave 256mb 64mb 60
#对于pubsub client,如果client-output-buffer一旦超过32mb,
#又或者超过8mb持续60秒,那么服务器就会立即断开客户端连接
client-output-buffer-limit pubsub 32mb 8mb 60
#redis执行任务的频率为1s除以hz
hz 10
#在aof重写的时候,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。
#这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值
aof-rewrite-incremental-fsync yes
排版并不是很好,版本对应为3.2.5。
文中部分没有翻译,后续补上。
翻译有出入的地方,请指出,感激不尽。