redis配置文件解读

对于任何一个服务来说,配置文件都是使用服务不可不了解的文件,Redis的配置文件位于Redis安装目录下,文件名为redis.conf,Windows的配置文件名为redis.windows.conf,Redis的很多功能的实现都需要修改配置文件里的参数,这里就对配置文件里的一些常用配置做一个简单的介绍,redis.conf文件从上到下跟着分隔符依次介绍。

1.文件开头

这段没什么解释的,当需要内存大小时,可以指定单位,通常是以 k,gb,m的形式出现,并且单位不区分大小写。

2.INCLUDES

这段主要是说在redis.conf文件里可以引入其他位置的文件,就比如nginx的配置文件nginx.conf末尾一般都会有include /etc/nginx/conf.d/*.conf,意思是加载conf.d目录下的所有后缀为.conf的文件。Redis也可以用这种方式引用文件,这样做的好处是如果有多人开发维护,每个人的配置内容可能不相同,全部都在redis.conf里操作会显得混乱,把每个人自己的配置文件定义好放到指定目录下,redis.conf统一引入就行了。注意include的位置,不能放在redis.conf的开头,开头是先引入配置文件,如果文件里有和redis.conf里相同的参数,redis.conf里会覆盖引入的文件里内容,所以一般都放在redis.conf文件的末尾。

3.GENERAL





这部分主要是对redis的端口,连接权限,日志记录几部分的配置,具体参数解释如下:

  • daemonize
    设置为yes表示指定Redis以守护进程的方式启动(后台启动),默认值为no,Windows不支持守护进程方式,所以redis.windows.conf里设置为no。

  • pidfile
    当以守护进程方式启动时候,Redis把pid写入到该参数设置的路径下文件里。

  • port
    Redis端口,默认6379,可修改参数值指定端口。

  • tcp-backlog
    该参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511。

  • bind
    Redis默认监听127.0.0.1,如果不设置该参数,远程无法连接到redis,一般修改为redis服务器IP,如果允许任何客户端连接,设置为0.0.0.0。

  • timeout
    该参数是客户端空闲多久时间关闭连接,值为0代表不关闭连接。

  • loglevel
    该参数定义日志级别。默认值为notice,可设置值有四种:debug,verbose,notice,warning。

  • logfile
    该参数指定log文件地址,默认打印在命令行终端的窗口上。

  • databases
    指定数据库的数目。默认的数据库是DB0 ,可以在每个连接上使用select 命令选择一个不同的数据库,dbid是一个介于0到databases - 1 之间的数值。默认值是16,也就是说默认Redis有16个数据库,一般不修改。

4.SNAPSHOTTING





这部分主要是数据持久化相关配置,具体参数解释如下:

  • save
    该参数是用来设置触发Redis的持久化(rbd方式)条件,也就是什么时候将内存中的数据保存到硬盘。上图中的参数值是Redis的默认值,三组参数值,只要其中任何一个满足,都会触发备份,触发条件依次是:900秒内如果至少有1个key的值变化,300秒内如果至少有10个key的值变化,60秒内如果至少有10000个key的值变化。如果不想触发备份,将save参数设置为空即可。

  • stop-writes-on-bgsave-error
    该参数设置rdb文件保存失败时如何处理,默认值为yes。当启用了RDB方式备份且最后一次后台保存数据失败,Redis是否停止接收数据,这会让用户意识到数据没有正确持久化到磁盘上。如果Redis重启了,那么又可以重新开始接收数据了。

  • rdbcompression
    该参数是配置存到磁盘中的快照是否开启压缩存储,默认值是yes。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,但是存储在磁盘上的快照会比较大。

  • rdbchecksum
    该参数设置数据校验,默认值是yes。存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。

  • dbfilename
    该参数设置保存的快照的文件名,默认是dump.rdb。

  • dir
    该参数设置保存的快照的路径,默认是在redis安装目录下。

5.REPLICATION










这部分主要是Redis主从数据复制相关配置,具体参数解释如下:

  • slaveof
    该参数指定主库master的ip和端口,默认注释掉的,即不属于任何库的从库。开启配置参数后,就会从指定主库同步数据。

  • masterauth
    该参数设置主从复制时候连接主库的密码。如果主库设置了密码,则需配置此参数。

  • slave-serve-stale-data
    该参数设置与主库失去连接时的处理,默认值为yes。当一个 slave 与 master 失去联系,或者复制正在进行的时候,slave可能会有两种表现:
    (1)如果为yes,slave仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候。
    (2)如果为no,在你执行命令时,slave都将返回一个"SYNC with master in progress 的错误。

  • slave-read-only
    该参数配置Redis的Slave实例是否接受写操作,即Slave是否为只读Redis。默认值为yes。

  • repl-diskless-sync
    主从数据复制是否使用无硬盘复制功能。默认值为no。

  • repl-diskless-sync-delay
    当启用无硬盘备份,服务器等待一段时间后才会通过套接字向从站传送RDB文件,这个等待时间是可配置的。这一点很重要,因为一旦传送开始,就不可能再为一个新到达的从站服务。从站则要排队等待下一次RDB传送。因此服务器等待一段 时间以期更多的从站到达。延迟时间以秒为单位,默认为5秒。要关掉这一功能,只需将它设置为0秒,传送会立即启动。默认值为5。

  • repl-disable-tcp-nodelay
    同步之后是否禁用从站上的TCP_NODELAY 如果你选择yes,redis会使用较少量的TCP包和带宽向从站发送数据。但这会导致在从站增加一点数据的延时。Linux内核默认配置情况下最多40毫秒的延时。如果选择no,从站的数据延时不会那么多,但备份需要的带宽相对较多。默认情况下我们将潜在因素优化,但在高负载情况下或者在主从站都跳的情况下,把它切换为yes是个好主意。默认值为no。

  • slave-priority
    该参数设置slave的优先级,主要用于哨兵模式,对master的选取时使用,优先级数字小的salve会优先考虑提升为master。

6.SECURITY



这部分主要是Redis安全相关的配置,具体参数解释如下:

  • requirepass
    该参数设置redis的连接密码,默认注释掉即不需要密码,设置后,连接redis需要使用该参数值。

  • rename-command
    该参数重命名redis命令,有些命令执行后影响很大,比如flushdb(清空当前库数据),flushall(清空所有库数据),config set(修改配置参数),要禁用这些命令,重命名为空即可,例如rename-command flushall "",如果要保留命令,可以修改命令名称,例如rename-command flushall abc,重启后,执行flushall会报错,执行abc会成功。

7.LIMITS





这部分主要是Redis客户端的连接限制配置,具体参数解释如下:

  • maxclients
    该参数设置置客户端最大并发连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件数,如果参数设置为0,表示不作限制,如果指定值,当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息。

  • maxmemory
    该参数设置分配给redis的最大内存,设置为0表示无限制。

8.APPEND ONLY MODE







这部分是Redis采用AOF方式持久化相关配置,具体参数解释如下:

  • appendonly
    该参数配置是否开启AOF持久化,默认为no。redis持久化有rdb和aof两种方式,默认开启的是rdb,rdb采用磁盘快照方式备份,根据save来触发,如果redis如果中途宕机,会导致可能有几分钟的数据丢失,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入数据的命令都写入appendonly.aof文件,每次启动时Redis都会先把这个文件的命令执行一边,先忽略RDB文件。

  • appendfilename
    该参数设置aof文件名,默认为appendonly.aof。

  • appendfsync
    aof持久化策略的配置;no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快;always表示每次写入都执行fsync,以保证数据同步到磁盘;everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。

  • no-appendfsync-on-rewrite
    在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no。如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。Linux的默认fsync策略是30秒。

  • auto-aof-rewrite-percentage
    aof自动重写配置,当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候,Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程,默认值为100。

  • auto-aof-rewrite-min-size
    设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写。

  • aof-load-truncated
    aof文件可能在尾部是不完整的,当redis启动的时候,aof文件的数据被载入内存。重启可能发生在redis所在的主机操作系统宕机后,尤其在ext4文件系统没有加上data=ordered选项,出现这种现象,redis宕机或者异常终止不会造成尾部不完整现象,可以选择让redis退出,或者导入尽可能多的数据。如果选择的是yes,当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。如果是no,用户必须手动redis-check-aof修复AOF文件才可以。默认值为yes。

9.LUA SCRIPTING

  • lua-time-limit
    一个lua脚本执行的最大时间,默认值为5000,单位为ms,一般不需改动。

10.REDIS CLUSTER







这部分是Redis集群相关配置,具体参数解释如下:

  • cluster-enabled
    该参数设置是否开启集群,默认为关闭。

  • cluster-config-file
    集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件。请确保与实例运行的系统中配置文件名称不冲突。默认配置为nodes-6379.conf。

  • cluster-node-timeout
    该参数设置集群节点连接时超时时间,单位为毫秒。

  • cluster-slave-validity-factor
    默认值为10。在进行故障转移的时候,全部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秒,即如果超过310秒slave将不会尝试进行故障转移。

  • cluster-migration-barrier
    默认值为1。master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。

  • cluster-require-full-coverage
    默认情况下,集群全部的slot有节点负责,集群状态才为ok,才能提供服务。设置为no,可以在slot没有全部分配的时候提供服务。不建议打开该配置,这样会造成分区的时候,小分区的master一直在接受写请求,而造成很长时间数据不一致。

11.SLOW LOG



这部分是Redis慢日志相关配置,具体参数解释如下:

  • slowlog-log-slower-than
    该参数定义慢日志的划定界限,只有query执行时间大于slowlog-log-slower-than的才会定义成慢查询,才会被slowlog进行记录。slowlog-log-slower-than设置的单位是微妙,默认是10000微妙,也就是10ms。

  • slowlog-max-len
    该参数表示慢查询最大的条数,当slowlog超过设定的最大值后,会将最早的slowlog删除,是个FIFO队列。

配置文件每部分的参数简单介绍了下,具体的参数怎样配置使用,还是得根据自己的需求去配置。各位如果觉得还有点意义,烦请点一下推荐,加个关注,互相交流。

posted @ 2020-03-08 14:12  风行天下12  阅读(336)  评论(0编辑  收藏  举报
返回顶部