忙碌是一种幸福,让我们无暇体验痛苦;没有时间空虚。这几句话可以简单概括一下我最近的工作和生活。很多小伙伴都来私信“提醒更新”了,今天就到啦!为了表达阿Q的歉意,送你一本《亿万流量的Java高并发与网络编程》。规则见文末。在之前的文章中,我们已经讲解了Redis的概念和基本命令。今天我们就来看看它的配置文件。Redis配置文件在我们的开发和实际应用中起着非常重要的作用。我们可以在安装目录下找到redis.conf配置文件,通过vim命令查看。为了防止配置文件被更改,使用前一定要备份!本文Redis版本为5.0.7UNITS1k=>1000bytes1kb=>1024bytes1m=>1000000bytes1mb=>1024*1024bytes1g=>1000000000bytes1gb=>1024*1024*1024bytes单位不区分大小写,只有bytesINCLUDES类似于structs2配置文件,并且可以通过includes包含。redis.conf可以作为主门,包括其他的。include/path/to/local.confinclude/path/to/other.confMODULESloadmodule/path/to/my_module.soloadmodule/path/to/other_module.soRedis可以通过loadmodule选项在启动时加载模块。如果服务器无法加载模块,服务器将停止。可以通过多个加载模块选项加载多个模块。NETWORK“bind127.0.0.1”:默认情况下,如果没有指定“bind”配置指令,Redis将监听服务器上所有可用网络接口上的连接。可以使用“bind”配置指令后接一个或多个IP地址来仅侦听一个或多个选定的接口。"例如:"bind192.168.1.10010.0.0.1当设置了多个bind地址时,Redis会在内部维护多个Socket,每个Socket用于一个网络接口。“protected-modeyes”:该选项默认启用。当Redis服务器没有使用bind选项显式指定要监听的网络接口,也没有设置密码时,Redis服务器将只接受来自127.0.0.1和::1以及Unix域Sockets的客户端的连接。"port6379":用于设置Redis监听的TCP端口,默认为6379,设置为0表示不监听该TCP端口"timeout0":空闲时间达到一定秒数后关闭连接,"0"表示不关闭"tcp-keepalive300":单位是秒。如果为0,则不进行keepalive检测。建议设置为60。"tcp-backlog511":设置tcp的backlog。backlog实际上是一个连接队列。backlog队列之和=未完成的三路握手队列+完成的三路握手队列在高并发环境下,需要有高的backlog值,以避免客户端连接慢的问题。【注意】:Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增加somaxconn和tcp_max_syn_backlog这两个值才能达到想要的效果。GENERALdaemonizeRedis采用单进程多线程模式,daemonize用于指定redis是否作为守护线程启动。默认情况下,Redis不作为守护进程运行。如果需要,请使用“是”。#daemonizeno//当前界面会进入redis的命令行界面,exit强制退出或关闭连接工具(putty、xshell等)都会导致redis进程退出。daemonizeyes//代表开启daemon进程模式。在这种模式下,redis会在后台运行,并将进程pid号写入redis.conf选项pidfile设置的文件中。这时候redis会一直运行,除非手动杀掉进程。supervisedno当你通过upstart或systemd运行Redis时,Redis可以与你的监督树交互。可用选项有:no无交互(默认)upstart通过向Redis发送SIGSTOP信号通知upstartsystemd通过写入$NOTIFY_SOCKET输入READY=1通知systemdauto选项是upstart或systemdpidfilepidfile/var/run/redis_6379.pid//processpidfileloglevelnotice指定服务器日志级别:从上到下递减debug:很多信息,对开发/测试很有用productionwarning:Onlylogveryimportant/criticalmessageslogfilelogfile""日志的名称,如果为空,redis会向控制台发送标准输出,如果配置为作为守护进程运行,logfile是设置为stdout,日志会发送到/dev/nulldatabasedatabases16系统默认16库,默认使用0库syslogsyslog-enabledno:是否将日志输出到syslog,系统日志默认关闭syslog-identredis:指定syslog中的日志标志facility以redis开头syslog-facilitylocal0:指定syslogfacility,值可以是USER或LOCAL0-LOCAL7,默认使用local0Security(安全)requirepass12345!@#设置redis连接密码,如果配置了连接密码,客户端连接redis时需要通过Auth命令提供密码,默认关闭。如果设置了密码,会ping不通,提示“NoAuthAuthenticationrequired”,添加auth+password即可通过。“在执行任何命令之前需要身份验证+密码。”Redis一般是做缓存的,不做安全的,系统会认为Linux是在安全的环境中。CLIENTSmaxclients10000:最大连接数设置redis同时可以连接多少个客户端。默认为10000个客户端。当不能设置进程文件句柄限制时,redis会设置为当前文件句柄限制值-32,因为redis会为自己内部的处理逻辑预留一些句柄。如果达到此限制,redis将拒绝新的连接请求,并向这些连接请求者发送“已达到最大客户端数”作为响应。MEMORYMANAGEMENT设置redis可以使用的内存量。一旦达到内存使用上限,redis会尝试移除内部数据,移除规则可以通过maxmemory-policy指定。如果redis不能按照移除规则移除内存中的数据,或者“不允许移除”,那么对于那些需要申请内存的指令,如SET,LPUSH等,redis会返回错误信息。但是对于命令不申请内存,还是会正常响应,比如GET等。如果你的redis是主redis(说明你的redis有slaveredis),那么在设置内存使用上限的时候,需要在系统中预留一些内存空间给同步队列缓存,只有设置了“不”remove”的情况下,这个因素不需要考虑。最大缓存#maxmemory
