Redis基础之配置文件

一般情况下,Redis配置文件中提供了很多默认的选项,可以不做任何修改而直接使用,本文主要简述配置文件中常用的配置选项,仅供学习分享使用,如有不足之处,还请指正。

Redis启动方式

Redis的启动时,必须有一个配置文件与之相匹配(如:/root/myredis/redis.conf),如下所示:

1 [root@localhost bin]# ./redis-server /root/myredis/redis.conf 

 

Redis配置文件详解

Redis配置文件项,主要分为以下几个部分:

  1. INCLUDES:一个配置文件,可以导入其他配置文件。
  2. MODULES:启动时加载的模块。
  3. NETWORK:网络相关配置。
  4. TLS/SSL:安全传输相关模块。
  5. GENERAL:通用配置相关。
  6. SNAPSHOTTING:快照配置相关。
  7. REPLICATION:主从复制相关配置项。
  8. KEYS TRACKING:键的追踪相关配置项。
  9. SECURITY:安全相关配置。
  10. CLIENTS:客户端相关配置。
  11. MEMORY MANAGEMENT:内存管理相关配置项。
  12. LAZY FREEING:延迟释放配置项。
  13. THREADED I/O:多线程I/O相关配置项。
  14. KERNEL OOM CONTROL:Linux内核防止内存占用过大配置选项。
  15. APPEND ONLY MODE:数据持久化追加模式。
  16. LUA SCRIPTING:Lua脚本相关配置项。
  17. REDIS CLUSTER:Redis集群相关配置项。
  18. CLUSTER DOCKER/NAT support:Docker/Nat集群支持配置项。
  19. SLOW LOG:耗时日志。
  20. LATENCY MONITOR:延迟监控配置相关选项。
  21. EVENT NOTIFICATION:事件通知相关配置项。
  22. GOPHER SERVER:Gopher服务器。
  23. ADVANCED CONFIG:高级配置。
  24. 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都可以访问,则可以注释掉下面的语句。如下所示:

 Examples:
#
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以下的端口号,因为容易与操作系统端口号引起冲突。如下所示:

 Accept connections on the specified port,default is 6379 (IANA #815344).
 If port 0 is specified Redis will not listen on a TCP socket.
3 port 6379

tcp-backlog配置完整连接队列的大小,默认511,但是此值一般不能大于/proc/sys/net/core/somaxconn 配置的值。如下所示:

 In high requests-per-second environments you need a high backlog in order
 to avoid slow clients connection 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
5  in order to get the desired effect.
6 tcp-backlog 511

关于/proc/sys/net/core/somaxconn的值,如下所示:

 cat /proc/sys/net/core/somaxconn
2 128

timeout设置超时时间,用于设置客户端多久没连接则断开连接人时间,0表示失效。如下所示:

 Close the connection after a client is idle for N seconds (0 to disable)
2 timeout 0

tcp-keepalive设置保持连接时长,超过时间,则发送TCP ACK到客户端,如下所示:

 A reasonable value for this option is 300 seconds,which is the new
 Redis default starting with Redis 3.2.1.
3 tcp-keepalive 300

GENERAL

daemonize用于配置redis是否以守护进程运行,默认为no,启动时会单独启动一个窗口,当窗口关闭时,redis进程结束。所以为了让redis在后台运行,需要将此项改为yes。如下所示:

 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.
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,如下所示:

 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)
6  warning (only very important / critical messages are logged)
7 loglevel notice

logfile日志文件配置,默认为空,则不记录日志,如下所示:

 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
4 logfile ""

syslog-enabled是否记录系统日志,默认不记录,如下所示:

 To enable logging to the system logger,just set 'syslog-enabled' to yes,
 and optionally update the other syslog parameters to suit your needs.
 syslog-enabled no
4 
 Specify the syslog identity.
 syslog-ident redis
7 
8  Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
9  syslog-facility local0

databases数据库个数,redis默认共有16个数据库,默认是0,如下所示:

 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
4 databases 16

always-show-logo设置logo是否显示,默认为yes,如下所示:

 By default Redis shows an ASCII art logo only when started to log to the
 standard output and if the standard output is a TTY. Basically this means
 that normally a logo is displayed only in interactive sessions.
 However it is possible to force the pre-4.0 behavior and always show a
 ASCII art logo in startup logs by setting the following option to yes.
7 always-show-logo yes

SNAPSHOTTING

快照主要用于将内存中的数据保存到硬盘上。

save命令,配置多久保存一次,可以设置多种模式,如下所示:

 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 behavior will be to save:
   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,如下所示:

 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,1)"> permissions,and so forth.
5 stop-writes-on-bgsave-error yes

rdbcompression 快照文件是否压缩,如果不压缩,则数据库文件将会很大,如下所示:

 Compress string objects using LZF when dump .rdb databases?
 By default compression is enabled 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.
5 rdbcompression yes

dbfilename数据库文件名,默认为dump.rdb。如下所示:

 The filename where to dump the DB
2 dbfilename dump.rdb

dir数据库文件的保存目录,如下所示:

 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.
7  Note that you must specify a directory here,not a file name.
9 dir ./

SECURITY

requirepass设置默认用户登录的密码,默认无密码,如下所示:

 IMPORTANT NOTE: starting with Redis 6 "requirepass" is just a compatibility
 layer on top of the new ACL system. The option effect will be just setting
 the password for the default user. Clients will still authenticate using
 AUTH <password> as usually,or more explicitly with AUTH default <password>
 if they follow the new protocol: both will work.
 requirepass foobared

CLIENTS

maxclients同一时间允许连接的最大客户端数,如下所示:

 Set the max number of connected clients at the same time. By default
 this limit is set to 10000 clients,however if the Redis server is not
 able to configure the process file limit to allow for the specified limit
 the max number of allowed clients is set to the current file limit
 minus 32 (as Redis reserves a few file descriptors for internal uses).
 Once the limit is reached Redis will close all the new connections sending
 an error 'max number of clients reached'.
 maxclients 10000

当配置redis集群时,redis连接数和集群总线共享。

Redis命令模式配置

redis除了可以通过修改配置文件的方式变更配置项,也可以通过客户端进行修改。示例如下:

config get * 用于获取所有的配置项,如下所示:

  1 127.0.0.1:6379> config get *
  2   1) "rdbchecksum"
  3   2) yes  4   3) daemonize  5   4)   6   5) io-threads-do-reads  7   6) no  8   7) lua-replicate-commands  9   8)  10   9) always-show-logo 11  10)  12  11) protected-mode 13  12)  14  13) rdbcompression 15  14)  16  15) rdb-del-sync-files 17  16)  18  17) activerehashing 19  18)  20  19) stop-writes-on-bgsave-error 21  20)  22  21) dynamic-hz 23  22)  24  23) lazyfree-lazy-eviction 25  24)  26  25) lazyfree-lazy-expire 27  26)  28  27) lazyfree-lazy-server-del 29  28)  30  29) lazyfree-lazy-user-del 31  30)  32  31) repl-disable-tcp-nodelay 33  32)  34  33) repl-diskless-sync 35  34)  36  35) gopher-enabled 37  36)  38  37) aof-rewrite-incremental-fsync 39  38)  40  39) no-appendfsync-on-rewrite 41  40)  42  41) cluster-require-full-coverage 43  42)  44  43) rdb-save-incremental-fsync 45  44)  46  45) aof-load-truncated 47  46)  48  47) aof-use-rdb-preamble 49  48)  50  49) cluster-replica-no-failover 51  50)  52  51) cluster-slave-no-failover 53  52)  54  53) replica-lazy-flush 55  54)  56  55) slave-lazy-flush 57  56)  58  57) replica-serve-stale-data 59  58)  60  59) slave-serve-stale-data 61  60)  62  61) replica-read-only 63  62)  64  63) slave-read-only 65  64)  66  65) replica-ignore-maxmemory 67  66)  68  67) slave-ignore-maxmemory 69  68)  70  69) jemalloc-bg-thread 71  70)  72  71) activedefrag 73  72)  74  73) syslog-enabled 75  74)  76  75) cluster-enabled 77  76)  78  77) appendonly 79  78)  80  79) cluster-allow-reads-when-down 81  80)  82  81) oom-score-adj 83  82)  84  83) aclfile 85  84) ""
 86  85) unixsocket 87  86)  88  87) pidfile 89  88) /var/run/redis_6379.pid 90  89) replica-announce-ip 91  90)  92  91) slave-announce-ip 93  92)  94  93) masteruser 95  94)  96  95) masterauth 97  96)  98  97) cluster-announce-ip 99  98) 100  99) syslog-ident101 100) redis102 101) dbfilename103 102) dump.rdb104 103) appendfilename105 104) appendonly.aof106 105) server_cpulist107 106) 108 107) bio_cpulist109 108) 110 109) aof_rewrite_cpulist111 110) 112 111) bgsave_cpulist113 112) 114 113) supervised115 114) 116 115) syslog-facility117 116) local0118 117) repl-diskless-load119 118) disabled120 119) loglevel121 120) notice122 121) maxmemory-policy123 122) noeviction124 123) appendfsync125 124) everysec126 125) databases127 126) 16128 127) port129 128) 6379130 129) io-threads131 130) 1132 131) auto-aof-rewrite-percentage133 132) 100134 133) cluster-replica-validity-factor135 134) 10136 135) cluster-slave-validity-factor137 136) 138 137) list-max-ziplist-size139 138) -2140 139) tcp-keepalive141 140) 300142 141) cluster-migration-barrier143 142) 144 143) active-defrag-cycle-min145 144) 146 145) active-defrag-cycle-max147 146) 25148 147) active-defrag-threshold-lower149 148) 150 149) active-defrag-threshold-upper151 150) 152 151) lfu-log-factor153 152) 154 153) lfu-decay-time155 154) 156 155) replica-priority157 156) 158 157) slave-priority159 158) 160 159) repl-diskless-sync-delay161 160) 5162 161) maxmemory-samples163 162) 164 163) timeout165 164) 0166 165) replica-announce-port167 166) 168 167) slave-announce-port169 168) 170 169) tcp-backlog171 170) 511172 171) cluster-announce-bus-port173 172) 174 173) cluster-announce-port175 174) 176 175) repl-timeout177 176) 60178 177) repl-ping-replica-period179 178) 180 179) repl-ping-slave-period181 180) 182 181) list-compress-depth183 182) 184 183) rdb-key-save-delay185 184) 186 185) key-load-delay187 186) 188 187) active-expire-effort189 188) 190 189) hz191 190) 192 191) min-replicas-to-write193 192) 194 193) min-slaves-to-write195 194) 196 195) min-replicas-max-lag197 196) 198 197) min-slaves-max-lag199 198) 200 199) maxclients201 200) 10000202 201) active-defrag-max-scan-fields203 202) 1000204 203) slowlog-max-len205 204) 128206 205) acllog-max-len207 206) 208 207) lua-time-limit209 208) 5000210 209) cluster-node-timeout211 210) 15000212 211) slowlog-log-slower-than213 212) 214 213) latency-monitor-threshold215 214) 216 215) proto-max-bulk-len217 216) 536870912218 217) stream-node-max-entries219 218) 220 219) repl-backlog-size221 220) 1048576222 221) maxmemory223 222) 224 223) hash-max-ziplist-entries225 224) 512226 225) set-max-intset-entries227 226) 228 227) zset-max-ziplist-entries229 228) 230 229) active-defrag-ignore-bytes231 230) 104857600232 231) hash-max-ziplist-value233 232) 64234 233) stream-node-max-bytes235 234) 4096236 235) zset-max-ziplist-value237 236) 238 237) hll-sparse-max-bytes239 238) 3000240 239) tracking-table-max-keys241 240) 1000000242 241) repl-backlog-ttl243 242) 3600244 243) auto-aof-rewrite-min-size245 244) 67108864246 245) logfile247 246) 248 247) client-query-buffer-limit249 248) 1073741824250 249) watchdog-period251 250) 252 251) dir253 252) /usr/local/redis/bin254 253) save255 254) 900 1 300 10 60 10000256 255) client-output-buffer-limit257 256) normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60258 257) unixsocketperm259 258) 260 259) slaveof261 260) 262 261) notify-keyspace-events263 262) 264 263) bind265 264) 127.0.0.1266 265) requirepass267 266) 268 267) oom-score-adj-values269 268) 0 200 800"
View Code

config get setting-name,获取单独的配置项,如loglevel,如下所示:

1 127.0.0.1:6379> config get loglevel
2 1) 3 2) 4 127.0.0.1:6379> 

 config set setting-name setting-value的格式来设置项,如下所示:

 config set loglevel verbose
OK
3 127.0.0.1:6379>4 1) 5 2) verbose6 127.0.0.1:6379> 

本文主要简述常见配置,更多配置,可参考菜鸟教程

备注

洞仙歌·冰肌玉骨

朝代:宋朝|作者:苏轼

仆七岁时,见眉州老尼,姓朱,忘其名,年九十岁。自言尝随其师入蜀主孟昶宫中,一日大热,蜀主与花蕊夫人夜纳凉摩诃池上,作一词,朱具能记之。
今四十年,朱已死久矣,人无知此词者,但记其首两句,暇日寻味,岂《洞仙歌》令乎?乃为足之云。
 
冰肌玉骨,自清凉无汗。
水殿风来暗香满。
绣帘开,一点明月窥人,人未寝,欹(qī)枕钗横鬓乱。
 
起来携素手,庭户无声,时见疏星渡河汉。
试问夜如何?
夜已三更,金波淡,玉绳低转。
但屈指西风几时来,
又不道流年暗中偷换。

相关文章

文章浏览阅读1.3k次。在 Redis 中,键(Keys)是非常重要的概...
文章浏览阅读3.3k次,点赞44次,收藏88次。本篇是对单节点的...
文章浏览阅读8.4k次,点赞8次,收藏18次。Spring Boot 整合R...
文章浏览阅读978次,点赞25次,收藏21次。在Centos上安装Red...
文章浏览阅读1.2k次,点赞21次,收藏22次。Docker-Compose部...
文章浏览阅读2.2k次,点赞59次,收藏38次。合理的JedisPool资...