配置文件说明
使用redis.conf; 在配置文件中,可以使用下面的方式来对配置项进行配置:
keyword argument1 argument2 ... argumentN
比如:
slaveof 127.0.0.1 6380
可以使用双引号将带有空格的参数包含起来,比如:
requirepass "hello world"
Redis 3.0的配置文件
- 为了让Redis读取配置文件,在启动redis的时候,必须将配置文件路径作为redis-server命令的第一个参数,比如:
./redis-server/path/to/redis.conf
- 内存大小的单位,使用k,GB,M,MB等作为单位是可以得,而且这些都是大小写不敏感的,所以很方便
INCLUDE配置
- 可以在配置文件中使用include项来包含其它配置文件,这个对于拥有多个redis服务的时候很有用,可以先制作一个配置模板,然后对于某个redis服务有特定要求的,可以进行定制。
注意:当使用admin或Redis Sentinel的“CONFIGREWRITE”命令来重写redis.conf文件,include配置项是不会被重写的。由于redis总是使用读取到的配置项作为最终配置,如果为了使得include的配置不会被重写,应该将include配置放在配置文件的末尾;如果include的配置可以被重写,那么就将include配置放在配置文件的开头
基本配置
- demonized:默认情况下,redis不是在后台运行的,为了使redis在后台运行,这个配置项需要修改为yes
- pidfile:当redis在后台运行的时候,Redis会将进程ID写入一个文件,默认情况下是写入/var/run/redis.pid;如果想修改文件名称,可以在这里修改。
- port:监听连接的端口号配置,默认为6379;如果配置为0,Redis不会创建监听套接字
- tcp-backlog:配置listen函数的backlog参数;在并发数比较高的场景下,应该将这个值配置大些,以免出现慢客户端连接的问题。注意:Linux内核会自动将这个值缩小到/proc/sys/net/core/somaxconn的值,所以为了设置较大的值生效,需要先提高somaxconn和tcp_max_syn_backlog的值。
- bind:默认情况下,Redis会绑定服务器上所有的网络接口,但是我们可以通过这个配置,让Redis绑定到一个或几个网络接口上;比如:
bind 192.168.1.100 10.0.0.1
- unixsocket和unixsocketperm:配置Unix域套接字的路径和权限,因为默认情况是不会使用Unix域套接字来监听端口的,所以很少使用。
- timeout:关闭一个客户端连接,如果这个连接在timeout时间内都是空闲的。默认为0,永远都不会关闭连接。
- tcp-keepalive:如果非0,在没有通信的情况下,则使用SO_KEEPALIVE套接字选项去发送keepalive探测报文;这个有两个作用:1)检测已经退出的客户端 2)从网络设备的角度来查看连接是不是活的;在Linux上,配置的值(以秒为单位)是发送探测报文的周期时长;注意:关闭一个连接,需要两倍的时间。一个建议值是:60秒
- loglevel:设置日志级别,debug -> verbose -> notice -> warning; 默认是notice 级别。
- logfile:设置日志文件的名称;如果为空,则日志写入到标准输出上;如果没有配置logfile,然后又设置demonized选项为yes,那么日志都被重定向到/dev/null上。
- syslog-enable:开启写入系统日志,可以设置为yes,默认为no
- syslog-ident:写入syslog时,日志中进程的名称,默认为redis
- syslog-facility:syslog的级别,默认为local0
- databases:设置数据库的数目,默认为16个;
持久化配置
- save:可以设定过了多长时间或者数据库发生了多少次操作则进行持久化操作。
save 900 1
save 300 10
save 60 10000
上面的配置表示,在900秒内至少有一次修改;在300秒内至少有10次修改;在60秒内,至少有10000次修改,则进行持久化。
- stop-writes-on-bgsave-error: Redis默认会开启RDB快照。如果上次写入快照文件失败,Redis不会再接收任何其它的RDB写的请求。这样用户就可以及时发现数据没有正常的写入磁盘;否则的话没有人知道错误已经发生,最终整个数据都被破坏了。如果持久化工作恢复正常了,Redis会自动恢复接收写RDB快照的请求。不过,如果你已经建立了对Redis server和持久化的监控机制,你也可以将这个配置设置为no,这样即使磁盘出现了问题(或者权限问题),Redis还是可以正常进行工作。
- rdb-compression:写入rdb文件时,对string对象使用LZF进行压缩,默认为开启的;如果需要节省CPU,可以将其设置为no
- rdb-checksum:从RDB格式的第5个版本以后,在RDB文件的最后都会写入一个CRC64的校验和,这样做可以确保文件的一致性;但是开启这个选项,在写入和加载RDB文件的时候,会带来将近10%的性能消耗。如果取消了rdb-checksum选项,那么checksum被置为0,这样加载进程发现checksum为0