一般情况下,Redis配置文件中提供了很多默认的选项,可以不做任何修改而直接使用,本文主要简述配置文件中常用的配置选项,仅供学习分享使用,如有不足之处,还请指正。
Redis启动方式
Redis的启动时,必须有一个配置文件与之相匹配(如:/root/myredis/redis.conf),如下所示:
- 1 [root@localhost bin]# ./redis-server /root/myredis/redis.conf
Redis配置文件详解
Redis配置文件项,主要分为以下几个部分:
- INCLUDES:一个配置文件,可以导入其他配置文件。
- MODULES:启动时加载的模块。
- NETWORK:网络相关配置。
- TLS/SSL:安全传输相关模块。
- GENERAL:通用配置相关。
- SNAPSHOTTING:快照配置相关。
- REPLICATION:主从复制相关配置项。
- KEYS TRACKING:键的追踪相关配置项。
- SECURITY:安全相关配置。
- CLIENTS:客户端相关配置。
- MEMORY MANAGEMENT:内存管理相关配置项。
- LAZY FREEING:延迟释放配置项。
- THREADED I/O:多线程I/O相关配置项。
- KERNEL OOM CONTROL:Linux内核防止内存占用过大配置选项。
- APPEND ONLY MODE:数据持久化追加模式。
- LUA SCRIPTING:Lua脚本相关配置项。
- REDIS CLUSTER:Redis集群相关配置项。
- CLUSTER DOCKER/NAT support:Docker/Nat集群支持配置项。
- SLOW LOG:耗时日志。
- LATENCY MONITOR:延迟监控配置相关选项。
- EVENT NOTIFICATION:事件通知相关配置项。
- GOPHER SERVER:Gopher服务器。
- ADVANCED CONFIG:高级配置。
- ACTIVE DEFRAGMENTATION:活动碎片整理相关配置。
说明:Redis配置文件,以# 开头,表示注释或者说明;如启用,则将#去掉即可。
INCLUDES
如果redis启动时有一个标准的配置模板,但是又需要自定义每一个实例的相关配置,则可以采用include 配置文件的方式导入。默认不需要导入文件,则此处是注释的。如下所示:
- 1 # include /path/to/local.conf
- 2 # include /path/to/other.conf
MODULES
启动时加载需要启动的模块,默认不需要启动,所以也是注释的。如下所示:
- 1 # loadmodule /path/to/my_module.so
- 2 # loadmodule /path/to/other_module.so
NETWORK
NETWORK主要用于配置网络相关的项,具体如下所示:
bind配置可以访问的ip地址,可以配置多个,一般建议局域网内部ip。如果是在internet下运行redis,并绑定了所有的ip地址,则是非常危险的操作。
如果需要所有ip都可以访问,则可以注释掉下面的语句。如下所示:
- 1 # Examples:
- 2 #
- 3 # bind 192.168.1.100 10.0.0.1
- 4 # bind 127.0.0.1 ::1
- 5
- 6 bind 127.0.0.1
port指定redis启动时的端口号,默认6379,不建议使用1000以下的端口号,因为容易与操作系统端口号引起冲突。如下所示:
- 1 # Accept connections on the specified port, default is 6379 (IANA #815344).
- 2 # If port 0 is specified Redis will not listen on a TCP socket.
- 3 port 6379
tcp-backlog配置完整连接队列的大小,默认511,但是此值一般不能大于/proc/sys/net/core/somaxconn 配置的值。如下所示:
- 1 # In high requests-per-second environments you need a high backlog in order
- 2 # to avoid slow clients connection issues. Note that the Linux kernel
- 3 # will silently truncate it to the value of /proc/sys/net/core/somaxconn so
- 4 # make sure to raise both the value of somaxconn and tcp_max_syn_backlog
- 5 # in order to get the desired effect.
- 6 tcp-backlog 511
关于/proc/sys/net/core/somaxconn的值,如下所示:
- 1 [root@localhost bin]# cat /proc/sys/net/core/somaxconn
- 2 128
timeout设置超时时间,用于设置客户端多久没连接则断开连接人时间,0表示失效。如下所示:
- 1 # Close the connection after a client is idle for N seconds (0 to disable)
- 2 timeout 0
tcp-keepalive设置保持连接时长,超过时间,则发送TCP ACK到客户端,如下所示:
- 1 # A reasonable value for this option is 300 seconds, which is the new
- 2 # Redis default starting with Redis 3.2.1.
- 3 tcp-keepalive 300
GENERAL
daemonize用于配置redis是否以守护进程运行,默认为no,启动时会单独启动一个窗口,当窗口关闭时,redis进程结束。所以为了让redis在后台运行,需要将此项改为yes。如下所示:
- 1 # By default Redis does not run as a daemon. Use 'yes' if you need it.
- 2 # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
- 3 daemonize yes
pidfile配置进程文件,当redis以守护进行启动时,会在启动时生成,关闭时删除启动文件,如下所示:
- 1 # If a pid file is specified, Redis writes it where specified at startup
- 2 # and removes it at exit.
- 3 #
- 4 # When the server runs non daemonized, no pid file is created if none is
- 5 # specified in the configuration. When the server is daemonized, the pid file
- 6 # is used even if not specified, defaulting to "/var/run/redis.pid".
- 7 #
- 8 # Creating a pid file is best effort: if Redis is not able to create it
- 9 # nothing bad happens, the server will start and run normally.
- 10 pidfile /var/run/redis_6379.pid
loglevel日志等级,共四种等级:debug,verbose,notice,warning默认为notice,如下所示:
- 1 # Specify the server verbosity level.
- 2 # This can be one of:
- 3 # debug (a lot of information, useful for development/testing)
- 4 # verbose (many rarely useful info, but not a mess like the debug level)
- 5 # notice (moderately verbose, what you want in production probably)
- 6 # warning (only very important / critical messages are logged)
- 7 loglevel notice
logfile日志文件配置,默认为空,则不记录日志,如下所示:
- 1 # Specify the log file name. Also the empty string can be used to force
- 2 # Redis to log on the standard output. Note that if you use standard
- 3 # output for logging but daemonize, logs will be sent to /dev/null
- 4 logfile ""
syslog-enabled是否记录系统日志,默认不记录,如下所示:
- 1 # To enable logging to the system logger, just set 'syslog-enabled' to yes,
- 2 # and optionally update the other syslog parameters to suit your needs.
- 3 # syslog-enabled no
- 4
- 5 # Specify the syslog identity.
- 6 # syslog-ident redis
- 7
- 8 # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
- 9 # syslog-facility local0
databases数据库个数,redis默认共有16个数据库,默认是0,如下所示:
- 1 # Set the number of databases. The default database is DB 0, you can select
- 2 # a different one on a per-connection basis using SELECT <dbid> where
- 3 # dbid is a number between 0 and 'databases'-1
- 4 databases 16
always-show-logo设置logo是否显示,默认为yes,如下所示:
- 1 # By default Redis shows an ASCII art logo only when started to log to the
- 2 # standard output and if the standard output is a TTY. Basically this means
- 3 # that normally a logo is displayed only in interactive sessions.
- 4 #
- 5 # However it is possible to force the pre-4.0 behavior and always show a
- 6 # ASCII art logo in startup logs by setting the following option to yes.
- 7 always-show-logo yes
SNAPSHOTTING
快照主要用于将内存中的数据保存到硬盘上。
save命令,配置多久保存一次,可以设置多种模式,如下所示:
- 1 # Save the DB on disk:
- 2 #
- 3 # save <seconds> <changes>
- 4 #
- 5 # Will save the DB if both the given number of seconds and the given
- 6 # number of write operations against the DB occurred.
- 7 #
- 8 # In the example below the behavior will be to save:
- 9 # after 900 sec (15 min) if at least 1 key changed
- 10 # after 300 sec (5 min) if at least 10 keys changed
- 11 # after 60 sec if at least 10000 keys changed
- 12
- 13 save 900 1
- 14 save 300 10
- 15 save 60 10000
stop-writes-on-bgsave-error 当正在保存或者错误时,是否停止写入,默认为yes,如下所示:
- 1 # However if you have setup your proper monitoring of the Redis server
- 2 # and persistence, you may want to disable this feature so that Redis will
- 3 # continue to work as usual even if there are problems with disk,
- 4 # permissions, and so forth.
- 5 stop-writes-on-bgsave-error yes
rdbcompression 快照文件是否压缩,如果不压缩,则数据库文件将会很大,如下所示:
- 1 # Compress string objects using LZF when dump .rdb databases?
- 2 # By default compression is enabled as it's almost always a win.
- 3 # If you want to save some CPU in the saving child set it to 'no' but
- 4 # the dataset will likely be bigger if you have compressible values or keys.
- 5 rdbcompression yes
dbfilename数据库文件名,默认为dump.rdb。如下所示:
- 1 # The filename where to dump the DB
- 2 dbfilename dump.rdb
dir数据库文件的保存目录,如下所示:
- 1 # The working directory.
- 2 #
- 3 # The DB will be written inside this directory, with the filename specified
- 4 # above using the 'dbfilename' configuration directive.
- 5 #
- 6 # The Append Only File will also be created inside this directory.
- 7 #
- 8 # Note that you must specify a directory here, not a file name.
- 9 dir ./
SECURITY
requirepass设置默认用户登录的密码,默认无密码,如下所示:
- 1 # IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatibility
- 2 # layer on top of the new ACL system. The option effect will be just setting
- 3 # the password for the default user. Clients will still authenticate using
- 4 # AUTH <password> as usually, or more explicitly with AUTH default <password>
- 5 # if they follow the new protocol: both will work.
- 6 #
- 7 # requirepass foobared
CLIENTS
maxclients同一时间允许连接的最大客户端数,如下所示:
- 1 # Set the max number of connected clients at the same time. By default
- 2 # this limit is set to 10000 clients, however if the Redis server is not
- 3 # able to configure the process file limit to allow for the specified limit
- 4 # the max number of allowed clients is set to the current file limit
- 5 # minus 32 (as Redis reserves a few file descriptors for internal uses).
- 6 #
- 7 # Once the limit is reached Redis will close all the new connections sending
- 8 # an error 'max number of clients reached'.
- 9 #
- 10 # maxclients 10000
当配置redis集群时,redis连接数和集群总线共享。
Redis命令模式配置
redis除了可以通过修改配置文件的方式变更配置项,也可以通过客户端进行修改。示例如下:
config get * 用于获取所有的配置项,如下所示:

View Code
config get setting-name,获取单独的配置项,如loglevel,如下所示:
- 1 127.0.0.1:6379> config get loglevel
- 2 1) "loglevel"
- 3 2) "notice"
- 4 127.0.0.1:6379>
config set setting-name setting-value的格式来设置项,如下所示:
- 1 127.0.0.1:6379> config set loglevel verbose
- 2 OK
- 3 127.0.0.1:6379> config get loglevel
- 4 1) "loglevel"
- 5 2) "verbose"
- 6 127.0.0.1:6379>
本文主要简述常见配置,更多配置,可参考菜鸟教程。
备注
洞仙歌·冰肌玉骨
朝代:宋朝|作者:苏轼
仆七岁时,见眉州老尼,姓朱,忘其名,年九十岁。自言尝随其师入蜀主孟昶宫中,一日大热,蜀主与花蕊夫人夜纳凉摩诃池上,作一词,朱具能记之。
今四十年,朱已死久矣,人无知此词者,但记其首两句,暇日寻味,岂《洞仙歌》令乎?乃为足之云。
冰肌玉骨,自清凉无汗。
水殿风来暗香满。
绣帘开,一点明月窥人,人未寝,欹(qī)枕钗横鬓乱。
起来携素手,庭户无声,时见疏星渡河汉。
试问夜如何?
夜已三更,金波淡,玉绳低转。
但屈指西风几时来,
又不道流年暗中偷换。