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都可以访问,则可以注释掉下面的语句。如下所示:

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 * 用于获取所有的配置项,如下所示:

  1 127.0.0.1:6379> config get *
  2   1) "rdbchecksum"
  3   2) "yes"
  4   3) "daemonize"
  5   4) "yes"
  6   5) "io-threads-do-reads"
  7   6) "no"
  8   7) "lua-replicate-commands"
  9   8) "yes"
 10   9) "always-show-logo"
 11  10) "yes"
 12  11) "protected-mode"
 13  12) "yes"
 14  13) "rdbcompression"
 15  14) "yes"
 16  15) "rdb-del-sync-files"
 17  16) "no"
 18  17) "activerehashing"
 19  18) "yes"
 20  19) "stop-writes-on-bgsave-error"
 21  20) "yes"
 22  21) "dynamic-hz"
 23  22) "yes"
 24  23) "lazyfree-lazy-eviction"
 25  24) "no"
 26  25) "lazyfree-lazy-expire"
 27  26) "no"
 28  27) "lazyfree-lazy-server-del"
 29  28) "no"
 30  29) "lazyfree-lazy-user-del"
 31  30) "no"
 32  31) "repl-disable-tcp-nodelay"
 33  32) "no"
 34  33) "repl-diskless-sync"
 35  34) "no"
 36  35) "gopher-enabled"
 37  36) "no"
 38  37) "aof-rewrite-incremental-fsync"
 39  38) "yes"
 40  39) "no-appendfsync-on-rewrite"
 41  40) "no"
 42  41) "cluster-require-full-coverage"
 43  42) "yes"
 44  43) "rdb-save-incremental-fsync"
 45  44) "yes"
 46  45) "aof-load-truncated"
 47  46) "yes"
 48  47) "aof-use-rdb-preamble"
 49  48) "yes"
 50  49) "cluster-replica-no-failover"
 51  50) "no"
 52  51) "cluster-slave-no-failover"
 53  52) "no"
 54  53) "replica-lazy-flush"
 55  54) "no"
 56  55) "slave-lazy-flush"
 57  56) "no"
 58  57) "replica-serve-stale-data"
 59  58) "yes"
 60  59) "slave-serve-stale-data"
 61  60) "yes"
 62  61) "replica-read-only"
 63  62) "yes"
 64  63) "slave-read-only"
 65  64) "yes"
 66  65) "replica-ignore-maxmemory"
 67  66) "yes"
 68  67) "slave-ignore-maxmemory"
 69  68) "yes"
 70  69) "jemalloc-bg-thread"
 71  70) "yes"
 72  71) "activedefrag"
 73  72) "no"
 74  73) "syslog-enabled"
 75  74) "no"
 76  75) "cluster-enabled"
 77  76) "no"
 78  77) "appendonly"
 79  78) "no"
 80  79) "cluster-allow-reads-when-down"
 81  80) "no"
 82  81) "oom-score-adj"
 83  82) "no"
 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-ident"
101 100) "redis"
102 101) "dbfilename"
103 102) "dump.rdb"
104 103) "appendfilename"
105 104) "appendonly.aof"
106 105) "server_cpulist"
107 106) ""
108 107) "bio_cpulist"
109 108) ""
110 109) "aof_rewrite_cpulist"
111 110) ""
112 111) "bgsave_cpulist"
113 112) ""
114 113) "supervised"
115 114) "no"
116 115) "syslog-facility"
117 116) "local0"
118 117) "repl-diskless-load"
119 118) "disabled"
120 119) "loglevel"
121 120) "notice"
122 121) "maxmemory-policy"
123 122) "noeviction"
124 123) "appendfsync"
125 124) "everysec"
126 125) "databases"
127 126) "16"
128 127) "port"
129 128) "6379"
130 129) "io-threads"
131 130) "1"
132 131) "auto-aof-rewrite-percentage"
133 132) "100"
134 133) "cluster-replica-validity-factor"
135 134) "10"
136 135) "cluster-slave-validity-factor"
137 136) "10"
138 137) "list-max-ziplist-size"
139 138) "-2"
140 139) "tcp-keepalive"
141 140) "300"
142 141) "cluster-migration-barrier"
143 142) "1"
144 143) "active-defrag-cycle-min"
145 144) "1"
146 145) "active-defrag-cycle-max"
147 146) "25"
148 147) "active-defrag-threshold-lower"
149 148) "10"
150 149) "active-defrag-threshold-upper"
151 150) "100"
152 151) "lfu-log-factor"
153 152) "10"
154 153) "lfu-decay-time"
155 154) "1"
156 155) "replica-priority"
157 156) "100"
158 157) "slave-priority"
159 158) "100"
160 159) "repl-diskless-sync-delay"
161 160) "5"
162 161) "maxmemory-samples"
163 162) "5"
164 163) "timeout"
165 164) "0"
166 165) "replica-announce-port"
167 166) "0"
168 167) "slave-announce-port"
169 168) "0"
170 169) "tcp-backlog"
171 170) "511"
172 171) "cluster-announce-bus-port"
173 172) "0"
174 173) "cluster-announce-port"
175 174) "0"
176 175) "repl-timeout"
177 176) "60"
178 177) "repl-ping-replica-period"
179 178) "10"
180 179) "repl-ping-slave-period"
181 180) "10"
182 181) "list-compress-depth"
183 182) "0"
184 183) "rdb-key-save-delay"
185 184) "0"
186 185) "key-load-delay"
187 186) "0"
188 187) "active-expire-effort"
189 188) "1"
190 189) "hz"
191 190) "10"
192 191) "min-replicas-to-write"
193 192) "0"
194 193) "min-slaves-to-write"
195 194) "0"
196 195) "min-replicas-max-lag"
197 196) "10"
198 197) "min-slaves-max-lag"
199 198) "10"
200 199) "maxclients"
201 200) "10000"
202 201) "active-defrag-max-scan-fields"
203 202) "1000"
204 203) "slowlog-max-len"
205 204) "128"
206 205) "acllog-max-len"
207 206) "128"
208 207) "lua-time-limit"
209 208) "5000"
210 209) "cluster-node-timeout"
211 210) "15000"
212 211) "slowlog-log-slower-than"
213 212) "10000"
214 213) "latency-monitor-threshold"
215 214) "0"
216 215) "proto-max-bulk-len"
217 216) "536870912"
218 217) "stream-node-max-entries"
219 218) "100"
220 219) "repl-backlog-size"
221 220) "1048576"
222 221) "maxmemory"
223 222) "0"
224 223) "hash-max-ziplist-entries"
225 224) "512"
226 225) "set-max-intset-entries"
227 226) "512"
228 227) "zset-max-ziplist-entries"
229 228) "128"
230 229) "active-defrag-ignore-bytes"
231 230) "104857600"
232 231) "hash-max-ziplist-value"
233 232) "64"
234 233) "stream-node-max-bytes"
235 234) "4096"
236 235) "zset-max-ziplist-value"
237 236) "64"
238 237) "hll-sparse-max-bytes"
239 238) "3000"
240 239) "tracking-table-max-keys"
241 240) "1000000"
242 241) "repl-backlog-ttl"
243 242) "3600"
244 243) "auto-aof-rewrite-min-size"
245 244) "67108864"
246 245) "logfile"
247 246) ""
248 247) "client-query-buffer-limit"
249 248) "1073741824"
250 249) "watchdog-period"
251 250) "0"
252 251) "dir"
253 252) "/usr/local/redis/bin"
254 253) "save"
255 254) "900 1 300 10 60 10000"
256 255) "client-output-buffer-limit"
257 256) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
258 257) "unixsocketperm"
259 258) "0"
260 259) "slaveof"
261 260) ""
262 261) "notify-keyspace-events"
263 262) ""
264 263) "bind"
265 264) "127.0.0.1"
266 265) "requirepass"
267 266) ""
268 267) "oom-score-adj-values"
269 268) "0 200 800"
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ī)枕钗横鬓乱。
 
起来携素手,庭户无声,时见疏星渡河汉。
试问夜如何?
夜已三更,金波淡,玉绳低转。
但屈指西风几时来,
又不道流年暗中偷换。
posted @ 2021-01-16 19:59  老码识途呀  阅读(371)  评论(0编辑  收藏  举报