Redis的配置文件为redis.conf,配置文件主要分为以下几个模块,分别是:
1、GENERAL
参数名 | 默认值 | 含义 |
daemonize | no | redis是否作为守护进程来运行,默认不运行为守护进程。 |
pidfile | /var/run/redis.pid | 如果redis作为守护进程来运行,会将进程的pid写入pidfile所指定的文件中 |
port | 6379 | redis所监听的端口号,默认为6379 |
tcp-backlog | 511 | 此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。TCP连接中已完成连接的大小是取tcp-backlog和somaxconn两者的最小值, 所以如果要调大的话必需修改内核的somaxconn值。这个参数即为调用listen()函数时指定的backlog。 |
bind | 0.0.0.0 | 配置允许连接redis服务器的IP,默认全网可以连接。 |
timeout | 0 | 客户端空闲N秒后服务器关闭连接,0表示禁用该机制。 |
tcp-keepalive | 0 | 用来定时向client发送tcp_ack包来探测client是否存活的。默认不探测,官方建议值为60秒。 |
loglevel | notice | 日志级别,可以设置为: debug:适用于开发和测试环境,记录非常多信息 verbose:记录很多无用信息,但不像debug那样混乱。 notice:记录生产环境中可能用到适当的信息。 warning :只记录非常关键和重要的信息 |
logfile | "" | 设置日志文件,如果为空日志则写到标准输出流 |
databases | 16 | 设置默认的数据库个数,默认为16 |
2、SNAPSHOTTING
参数名 | 默认值 | 含义 |
save | 900 1 | 服务器在900s内对数据库进行了了至少1次修改,BGSAVE命令就会被执行。 |
save | 300 10 | 服务器在300s之内对数据库进行了至少10次修改,BGSAVE命令就会被执行。 |
save | 60 10000 | 服务器在60s之内对数据库进行了至少10000次修改,BGSAVE命令就会被执行。 |
stop-writes-on-bgsave-error | yes | 在持久化过程成如果出现错误是否停止向redis写入数据。 |
rdbcompression | yes | 是否在持久化的时候使用LZF方式压缩字符串对象。 |
rdbchecksum | yes | 在持久化的时候,是否进行文件的校验。如果进行文件校验将会付出10%的性能代价。 |
dbfilename | dump.rdb | 持久化的文件名。 |
dir | ./ | 持久化的工作目录,AOF文件也会写在这里。 |
3、REPLICATION
参数名 | 默认值 | 含义 |
slaveof <masterip> <masterport> | 未启用 | 配置从服务器的主服务器地址, 保证从服务器重启之后仍然保持主从关系. |
masterauth <master-password> | 未启用 | 从服务器复制主服务器时需要输入密码 |
slave-serve-stale-data | yes | 在主从复制期间或者从服务器和主服务器失去连接时,从服务器充当两种角色: 如果设置为yes,表示从服务器在这期间仍然会回复客户端的请求,此时可能带有过期的数据,或者如果这是第一次同步,数据集可能只是空的。 如果设置为no,表示从服务器对客户端除了INFO和SLAVEOF命令外,其它的所有类型的命令都回复一个错误“SYNC with master in progress”。 |
slave-read-only | yes | 从服务器是否设置为只读。一主多从可以用作读写分离的场景,主提供写,从提供读。 |
repl-ping-slave-period | 10 | 从服务器发送ping给主服务器,如果在该参数指定的时间内没有收到pong,那么表示网络状态不好, 主服务器会断开连接. |
repl-timeout | 60 | 当redis检测到repl-timeout超时(默认值60s),将会关闭主从之间的连接,redis slave发起重新建立主从连接的请求。 |
repl-disable-tcp-nodelay | no | SYNC是否禁用TCP_NODELAY机制,即TCP的粘包机制. |
repl-backlog-size | 1mb | 复制积压缓冲区的大小. |
repl-backlog-ttl | 3600 | 复制积压缓冲区在主从服务器失去连接后多久后进行释放. |
slave-priority | 100 | 从服务器被哨兵选未主服务器的优先级,优先级越低,表示越有可能选未主服务器 . 如果设置未0,表示该从服务器不能充当master. |
min-slaves-to-write | 3 | 从服务器的数量小于3个,主服务器拒绝执行写命令. |
min-slaves-max-lag | 10 | 三个从服务器的延迟都大于等于10s时,主服务器将拒绝执行写命令. |
4、SECURITY
参数名 | 默认值 | 含义 |
requirepass foobared | 未启用 | Redis命令需要输入的密码 |
rename-command CONFIG "" | 未启用 | 重命名Redis的那些危险的命令,这样普通用户不能使用 |
5、LIMITS
参数名 | 默认值 | 含义 |
maxclients 10000 | 未启用 | Redis最大的客户端数量 |
maxmemory <bytes> | 未启用 | Redis最大的内存大小,如果超过这个值,redis将会执行过期删除,如果不能执行过期删除,那么redis将会返回错误 |
maxmemory-policy noeviction | 未启用 | noeviction: 不删除策略, 达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。(默认值) |
maxmemory-samples 5 | 未启动 | LRU淘汰策略的样例大小,redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取maxmeory-samples个键,删除这些键中最近最少使用的键。 |
6、APPEND ONLY MODE
参数名 | 默认值 | 含义 |
appendonly | no | 是否开启AOF持久化功能 |
appendfilename | "appendonly.aof" | AOF持久化文件名 |
appendfsync | everysec | AOF持久化的方式: no: 不调用fsync(),由OS决定什么时候flush数据到磁盘; everysec: fsync()每秒调用一次; always: 每次有数据写入就调用一次,最安全但是最慢。 |
no-appendfsync-on-rewrite | no | bgrewriteaof往往会涉及大量磁盘操作,这样就会造成主进程在写aof文件的时候出现阻塞的情形,如果该参数设置位no,表示fsync不执行不磁盘操作,只是写入了缓冲区。设置为yes,则执行磁盘操作,但是可能会阻塞很久。 |
auto-aof-rewrite-percentage | 100 | 触发redis的rewrite的文件百分比,即当前文件大小大于上一次rewrite文件的的100%时,触发rewrite。 |
auto-aof-rewrite-min-size | 64MB | 最初的rewirte文件的大小。 |
7、LUA SCRIPTING
参数名 | 默认值 | 含义 |
lua-time-limit | 5000 | Lua脚本的最大执行时间(ms) |
8、REDIS CLUSTER
参数名 | 默认值 | 含义 |
cluster-enabled yes | 未启用 | 是否启动Redis集群功能 |
cluster-config-file nodes-6379.conf | 未启用 | redis集群的配置文件名 |
cluster-node-timeout 15000 | 未启用 | 集群节点的超时时间 |
cluster-migration-barrier 1 | 未启用 | cluster-migration-barrier属性可以保证redis集群中不会出现裸奔的主节点(这个主节点没有对应的从节点),当某个主节点的 从节点挂掉裸奔后,会从其他富余的主节点分配一个从节点过来,确保每个主节点都有至少一个从节点,不至于因为主节点挂 掉而没有相应从节点替换为主节点导致集群崩溃不可用。 |
9、SLOW LOG
参数名 | 默认值 | 含义 |
slowlog-log-slower-than | 10000 | 表示slowlog的划定界限,只有query执行时间大于slowlog-log-slower-than的才会定义成慢查询,才会被slowlog进行记录。 |
slowlog-max-len | 128 | 表示慢查询最大的条数,当slowlog超过设定的最大值后,会将最早的slowlog删除,是个FIFO队列 |
10、ADVANCED CONFIG
参数名 | 默认值 | 含义 |
hash-max-ziplist-entries | 512 | 哈希对象保存的元素个数大于512时进行编码转换,转为哈希表,最开始为压缩列表 |
hash-max-ziplist-value | 64 | 哈希对象保存的字符串长度大于64时进行编码转换,转为哈希表,最开始为压缩列表 |
list-max-ziplist-entries | 512 | 列表对象保存的元素个数大于512时进行编码转换,转为双端链表,最开始为压缩列表 |
list-max-ziplist-value | 64 | 列表对象保存的字符串长度大于64时进行编码转换,转为双端链表,最开始为压缩列表 |
set-max-intset-entries | 512 | 集合对象保存的元素个数大于512时进行编码转换,转为哈希表,最开始为整数集合 |
zset-max-ziplist-entries | 128 | 有序集合对象保存的元素个数大于128时进行编码转换,转为跳跃表,最开始为压缩列表 |
zset-max-ziplist-value | 64 | 有序集合对象保存的元素成员的长度大于64字节时进行编码转换,转为跳跃表,最开始为压缩列表 |
hll-sparse-max-bytes | 3000 | |
activerehashing | yes | 是否激活rehash算法 |
client-output-buffer-limit | nomal 0 0 0 | |
client-output-buffer-limit | slave 256mb 64mb 60 | |
client-output-buffer-limit | pubsub 32mb 8mb 60 | |
hz | 10 | 后台函数serverCron函数每秒执行的次数,默认每秒执行10次 |
aof-rewrite-incremental-fsync | yes | 在进行AOF文件重写的时候,每产生32MB的文件,就调用fsync函数同步到文件中 |