# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf# 要读配置文件 需要以 `./redis-server /path/to/redis.conf`方式启动redis# Note on units: when memory size is needed, it is possible to specify# it in the usual form of 1k 5GB 4M and so forth:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1024 bytes# 1g => 1000000000 bytes# 1gb => 1024*1024*1024 bytes## units are case insensitive so 1GB 1Gb 1gB are all the same.################################## INCLUDES #################################### Include one or more other config files here. This is useful if you# have a standard template that goes to all Redis servers but also need# to customize a few per-server settings. Include files can include# other files, so use this wisely.## Notice option "include" won't be rewritten by command "CONFIG REWRITE"# from admin or Redis Sentinel. Since Redis always uses the last processed# line as value of a configuration directive, you'd better put includes# at the beginning of this file to avoid overwriting config change at runtime.## If instead you are interested in using includes to override configuration# options, it is better to use include as the last line.## include /path/to/local.conf# include /path/to/other.conf# 在这里引入一个或多个config文件. 当你有一个标准模板而只需要个性化某几个变量的时候很有用. 被引入的文件也可以引入其他的文件.# 注意: include的文件无法被admin或者Redis Sentinel通过CONFIG REWRITE命令重写. 因为redis是取某个配置最后的一行作为实际配置值, 所以为了防止运行时对redis文件重写, 最好将include语句在本文件中前置. # 如果你希望通过include来复写本配置文件, 最好将include放在最后一行# 这个地方不太好懂举个例子吧# 我们假设我们有redis.conf和local.conf 且local.conf在redis.conf的最后面 我们有个值叫aaa 在local.conf设的是aaa 100 在redis.conf里设的是aaa 50# 那么因为redis取最后一次配置 所以redis会认为aaa是100 这时候调用CONFIG REWRITE的时候 因为无法解析local.conf 就会认为redis.conf中的aaa 50是过期的 就会更新redis.conf中的aaa为aaa 100, 这样会导致配置文件发生变化, 应该尽量避免。################################ GENERAL ###################################### By default Redis does not run as a daemon. Use 'yes' if you need it.# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.# 是否使用daemon模式
daemonize no
# When running daemonized, Redis writes a pid file in /var/run/redis.pid by# default. You can specify a custom pid file location here.# pid文件位置 默认是/var/run/redis.pid
pidfile /var/run/redis.pid
# Accept connections on the specified port, default is 6379.# If port 0 is specified Redis will not listen on a TCP socket.
port 6379# TCP listen() backlog.## In high requests-per-second environments you need an high backlog in order# to avoid slow clients connections issues. Note that the Linux kernel# will silently truncate it to the value of /proc/sys/net/core/somaxconn so# make sure to raise both the value of somaxconn and tcp_max_syn_backlog# in order to get the desired effect.# 在高请求环境下需要一个高的backlog来避免连接过慢的问题# 注意linux内核会把该值削减到/proc/sys/net/core/somaxconn, 所以要确认增加somaxconn和tcp_max_syn_backlog来获得想要的效果.
tcp-backlog 511# By default Redis listens for connections from all the network interfaces# available on the server. It is possible to listen to just one or multiple# interfaces using the "bind" configuration directive, followed by one or# more IP addresses.## Examples:## bind 192.168.1.100 10.0.0.1# bind 127.0.0.1# # Redis默认监听所有网络接口, 可以通过bind来设定只监听某几个端口# Specify the path for the Unix socket that will be used to listen for# incoming connections. There is no default, so Redis will not listen# on a unix socket when not specified.# 监听连接的socket path. 没有默认值, 如果不设, redis不会监听unix socket# unixsocket /tmp/redis.sock# unixsocketperm 700# Close the connection after a client is idle for N seconds (0 to disable)# 客户端空闲超过N秒就关掉连接(0默认不关闭)
timeout 0# TCP keepalive.## If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence# of communication. This is useful for two reasons:## 1) Detect dead peers.# 2) Take the connection alive from the point of view of network# equipment in the middle.## On Linux, the specified value (in seconds) is the period used to send ACKs.# Note that to close the connection the double of the time is needed.# On other kernels the period depends on the kernel configuration.## A reasonable value for this option is 60 seconds.# 如果不是0, 通过SO_KEEPALIVE来发送TCP ACK到没有通信的客户端. 这样有两个用:# 1). 发现死掉的peers# 2). 保证中间网络设备不会关闭掉连接
tcp-keepalive 0# Specify the server verbosity level.# This can be one of:# debug (a lot of information, useful for development/testing)# verbose (many rarely useful info, but not a mess like the debug level)# notice (moderately verbose, what you want in production probably)# warning (only very important / critical messages are logged)# 日志等级 debug verbose notice warning
loglevel notice
# Specify the log file name. Also the empty string can be used to force# Redis to log on the standard output. Note that if you use standard# output for logging but daemonize, logs will be sent to /dev/null# log文件的位置 空字符串表示输出到stdout. 注意如果在daemon方式下输出到stdout,log会被发送到/dev/null
logfile ""# To enable logging to the system logger, just set 'syslog-enabled' to yes,# and optionally update the other syslog parameters to suit your needs.# 是否发送到system logger# syslog-enabled no# Specify the syslog identity.# syslog-ident redis# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.# syslog-facility local0# Set the number of databases. The default database is DB 0, you can select# a different one on a per-connection basis using SELECT <dbid> where# dbid is a number between 0 and 'databases’-1# 数据库的数量 从0到database-1
databases 16################################ SNAPSHOTTING ################################## Save the DB on disk:## save <seconds> <changes>## Will save the DB if both the given number of seconds and the given# number of write operations against the DB occurred.## In the example below the behaviour will be to save:# after 900 sec (15 min) if at least 1 key changed# after 300 sec (5 min) if at least 10 keys changed# after 60 sec if at least 10000 keys changed## Note: you can disable saving completely by commenting out all "save" lines.## It is also possible to remove all the previously configured save# points by adding a save directive with a single empty string argument# like in the following example:## save ""
save 9001
save 30010
save 6010000# By default Redis will stop accepting writes if RDB snapshots are enabled# (at least one save point) and the latest background save failed.# This will make the user aware (in a hard way) that data is not persisting# on disk properly, otherwise chances are that no one will notice and some# disaster will happen.## If the background saving process will start working again Redis will# automatically allow writes again.## However if you have setup your proper monitoring of the Redis server# and persistence, you may want to disable this feature so that Redis will# continue to work as usual even if there are problems with disk,# permissions, and so forth.# bgsave失败时 Redis是否可写
stop-writes-on-bgsave-error yes
# Compress string objects using LZF when dump .rdb databases?# For default that's set to 'yes' as it's almost always a win.# If you want to save some CPU in the saving child set it to 'no' but# the dataset will likely be bigger if you have compressible values or keys.
rdbcompression yes
# Since version 5 of RDB a CRC64 checksum is placed at the end of the file.# This makes the format more resistant to corruption but there is a performance# hit to pay (around 10%) when saving and loading RDB files, so you can disable it# for maximum performances.## RDB files created with checksum disabled have a checksum of zero that will# tell the loading code to skip the check.
rdbchecksum yes
# The filename where to dump the DB# bgsave的文件位置
dbfilename dump.rdb
# The working directory.## The DB will be written inside this directory, with the filename specified# above using the 'dbfilename' configuration directive.## The Append Only File will also be created inside this directory.## Note that you must specify a directory here, not a file name.
dir ./
######################