@rpcbase/server 0.65.0 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -32,8 +32,17 @@
32
32
  # If instead you are interested in using includes to override configuration
33
33
  # options, it is better to use include as the last line.
34
34
  #
35
+ # Included paths may contain wildcards. All files matching the wildcards will
36
+ # be included in alphabetical order.
37
+ # Note that if an include path contains a wildcards but no files match it when
38
+ # the server is started, the include statement will be ignored and no error will
39
+ # be emitted. It is safe, therefore, to include wildcard files from empty
40
+ # directories.
41
+ #
35
42
  # include /path/to/local.conf
36
43
  # include /path/to/other.conf
44
+ # include /path/to/fragments/*.conf
45
+ #
37
46
 
38
47
  ################################## MODULES #####################################
39
48
 
@@ -49,46 +58,84 @@
49
58
  # for connections from all available network interfaces on the host machine.
50
59
  # It is possible to listen to just one or multiple selected interfaces using
51
60
  # the "bind" configuration directive, followed by one or more IP addresses.
61
+ # Each address can be prefixed by "-", which means that redis will not fail to
62
+ # start if the address is not available. Being not available only refers to
63
+ # addresses that does not correspond to any network interface. Addresses that
64
+ # are already in use will always fail, and unsupported protocols will always BE
65
+ # silently skipped.
52
66
  #
53
67
  # Examples:
54
68
  #
55
- # bind 192.168.1.100 10.0.0.1
56
- # bind 127.0.0.1 ::1
69
+ # bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses
70
+ # bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6
71
+ # bind * -::* # like the default, all available interfaces
57
72
  #
58
73
  # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the
59
74
  # internet, binding to all the interfaces is dangerous and will expose the
60
75
  # instance to everybody on the internet. So by default we uncomment the
61
76
  # following bind directive, that will force Redis to listen only on the
62
- # IPv4 loopback interface address (this means Redis will only be able to
63
- # accept client connections from the same host that it is running on).
77
+ # IPv4 and IPv6 (if available) loopback interface addresses (this means Redis
78
+ # will only be able to accept client connections from the same host that it is
79
+ # running on).
64
80
  #
65
81
  # IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
66
- # JUST COMMENT OUT THE FOLLOWING LINE.
82
+ # COMMENT OUT THE FOLLOWING LINE.
83
+ #
84
+ # You will also need to set a password unless you explicitly disable protected
85
+ # mode.
67
86
  # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68
- bind 0.0.0.0
87
+ bind 127.0.0.1 -::1
69
88
 
70
- # Protected mode is a layer of security protection, in order to avoid that
71
- # Redis instances left open on the internet are accessed and exploited.
89
+ # By default, outgoing connections (from replica to master, from Sentinel to
90
+ # instances, cluster bus, etc.) are not bound to a specific local address. In
91
+ # most cases, this means the operating system will handle that based on routing
92
+ # and the interface through which the connection goes out.
72
93
  #
73
- # When protected mode is on and if:
94
+ # Using bind-source-addr it is possible to configure a specific address to bind
95
+ # to, which may also affect how the connection gets routed.
74
96
  #
75
- # 1) The server is not binding explicitly to a set of addresses using the
76
- # "bind" directive.
77
- # 2) No password is configured.
97
+ # Example:
78
98
  #
79
- # The server only accepts connections from clients connecting from the
80
- # IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
81
- # sockets.
99
+ # bind-source-addr 10.0.0.1
100
+
101
+ # Protected mode is a layer of security protection, in order to avoid that
102
+ # Redis instances left open on the internet are accessed and exploited.
103
+ #
104
+ # When protected mode is on and the default user has no password, the server
105
+ # only accepts local connections from the IPv4 address (127.0.0.1), IPv6 address
106
+ # (::1) or Unix domain sockets.
82
107
  #
83
108
  # By default protected mode is enabled. You should disable it only if
84
109
  # you are sure you want clients from other hosts to connect to Redis
85
- # even if no authentication is configured, nor a specific set of interfaces
86
- # are explicitly listed using the "bind" directive.
87
- protected-mode no
110
+ # even if no authentication is configured.
111
+ protected-mode yes
112
+
113
+ # Redis uses default hardened security configuration directives to reduce the
114
+ # attack surface on innocent users. Therefore, several sensitive configuration
115
+ # directives are immutable, and some potentially-dangerous commands are blocked.
116
+ #
117
+ # Configuration directives that control files that Redis writes to (e.g., 'dir'
118
+ # and 'dbfilename') and that aren't usually modified during runtime
119
+ # are protected by making them immutable.
120
+ #
121
+ # Commands that can increase the attack surface of Redis and that aren't usually
122
+ # called by users are blocked by default.
123
+ #
124
+ # These can be exposed to either all connections or just local ones by setting
125
+ # each of the configs listed below to either of these values:
126
+ #
127
+ # no - Block for any connection (remain immutable)
128
+ # yes - Allow for any connection (no protection)
129
+ # local - Allow only for local connections. Ones originating from the
130
+ # IPv4 address (127.0.0.1), IPv6 address (::1) or Unix domain sockets.
131
+ #
132
+ # enable-protected-configs no
133
+ # enable-debug-command no
134
+ # enable-module-command no
88
135
 
89
136
  # Accept connections on the specified port, default is 6379 (IANA #815344).
90
137
  # If port 0 is specified Redis will not listen on a TCP socket.
91
- # port 6379
138
+ port 6379
92
139
 
93
140
  # TCP listen() backlog.
94
141
  #
@@ -105,7 +152,7 @@ tcp-backlog 511
105
152
  # incoming connections. There is no default, so Redis will not listen
106
153
  # on a unix socket when not specified.
107
154
  #
108
- # unixsocket /tmp/redis.sock
155
+ # unixsocket /run/redis.sock
109
156
  # unixsocketperm 700
110
157
 
111
158
  # Close the connection after a client is idle for N seconds (0 to disable)
@@ -128,6 +175,16 @@ timeout 0
128
175
  # Redis default starting with Redis 3.2.1.
129
176
  tcp-keepalive 300
130
177
 
178
+ # Apply OS-specific mechanism to mark the listening socket with the specified
179
+ # ID, to support advanced routing and filtering capabilities.
180
+ #
181
+ # On Linux, the ID represents a connection mark.
182
+ # On FreeBSD, the ID represents a socket cookie ID.
183
+ # On OpenBSD, the ID represents a route table ID.
184
+ #
185
+ # The default value is 0, which implies no marking is required.
186
+ # socket-mark-id 0
187
+
131
188
  ################################# TLS/SSL #####################################
132
189
 
133
190
  # By default, TLS/SSL is disabled. To enable it, the "tls-port" configuration
@@ -143,8 +200,32 @@ tcp-keepalive 300
143
200
  #
144
201
  # tls-cert-file redis.crt
145
202
  # tls-key-file redis.key
203
+ #
204
+ # If the key file is encrypted using a passphrase, it can be included here
205
+ # as well.
206
+ #
207
+ # tls-key-file-pass secret
146
208
 
147
- # Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange:
209
+ # Normally Redis uses the same certificate for both server functions (accepting
210
+ # connections) and client functions (replicating from a master, establishing
211
+ # cluster bus connections, etc.).
212
+ #
213
+ # Sometimes certificates are issued with attributes that designate them as
214
+ # client-only or server-only certificates. In that case it may be desired to use
215
+ # different certificates for incoming (server) and outgoing (client)
216
+ # connections. To do that, use the following directives:
217
+ #
218
+ # tls-client-cert-file client.crt
219
+ # tls-client-key-file client.key
220
+ #
221
+ # If the key file is encrypted using a passphrase, it can be included here
222
+ # as well.
223
+ #
224
+ # tls-client-key-file-pass secret
225
+
226
+ # Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange,
227
+ # required by older versions of OpenSSL (<3.0). Newer versions do not require
228
+ # this configuration and recommend against it.
148
229
  #
149
230
  # tls-dh-params-file redis.dh
150
231
 
@@ -177,9 +258,12 @@ tcp-keepalive 300
177
258
  #
178
259
  # tls-cluster yes
179
260
 
180
- # Explicitly specify TLS versions to support. Allowed values are case insensitive
181
- # and include "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3" (OpenSSL >= 1.1.1) or
182
- # any combination. To enable only TLSv1.2 and TLSv1.3, use:
261
+ # By default, only TLSv1.2 and TLSv1.3 are enabled and it is highly recommended
262
+ # that older formally deprecated versions are kept disabled to reduce the attack surface.
263
+ # You can explicitly specify TLS versions to support.
264
+ # Allowed values are case insensitive and include "TLSv1", "TLSv1.1", "TLSv1.2",
265
+ # "TLSv1.3" (OpenSSL >= 1.1.1) or any combination.
266
+ # To enable only TLSv1.2 and TLSv1.3, use:
183
267
  #
184
268
  # tls-protocols "TLSv1.2 TLSv1.3"
185
269
 
@@ -221,6 +305,7 @@ tcp-keepalive 300
221
305
 
222
306
  # By default Redis does not run as a daemon. Use 'yes' if you need it.
223
307
  # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
308
+ # When Redis is supervised by upstart or systemd, this parameter has no impact.
224
309
  daemonize no
225
310
 
226
311
  # If you run Redis from upstart or systemd, Redis can interact with your
@@ -229,11 +314,17 @@ daemonize no
229
314
  # supervised upstart - signal upstart by putting Redis into SIGSTOP mode
230
315
  # requires "expect stop" in your upstart job config
231
316
  # supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
317
+ # on startup, and updating Redis status on a regular
318
+ # basis.
232
319
  # supervised auto - detect upstart or systemd method based on
233
320
  # UPSTART_JOB or NOTIFY_SOCKET environment variables
234
321
  # Note: these supervision methods only signal "process is ready."
235
322
  # They do not enable continuous pings back to your supervisor.
236
- supervised no
323
+ #
324
+ # The default is "no". To run under upstart/systemd, you can simply uncomment
325
+ # the line below:
326
+ #
327
+ # supervised auto
237
328
 
238
329
  # If a pid file is specified, Redis writes it where specified at startup
239
330
  # and removes it at exit.
@@ -244,6 +335,9 @@ supervised no
244
335
  #
245
336
  # Creating a pid file is best effort: if Redis is not able to create it
246
337
  # nothing bad happens, the server will start and run normally.
338
+ #
339
+ # Note that on modern Linux systems "/run/redis.pid" is more conforming
340
+ # and should be used instead.
247
341
  pidfile /var/run/redis_6379.pid
248
342
 
249
343
  # Specify the server verbosity level.
@@ -257,7 +351,7 @@ loglevel notice
257
351
  # Specify the log file name. Also the empty string can be used to force
258
352
  # Redis to log on the standard output. Note that if you use standard
259
353
  # output for logging but daemonize, logs will be sent to /dev/null
260
- logfile "/var/log/redis/logs.txt"
354
+ logfile ""
261
355
 
262
356
  # To enable logging to the system logger, just set 'syslog-enabled' to yes,
263
357
  # and optionally update the other syslog parameters to suit your needs.
@@ -269,44 +363,74 @@ logfile "/var/log/redis/logs.txt"
269
363
  # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
270
364
  # syslog-facility local0
271
365
 
366
+ # To disable the built in crash log, which will possibly produce cleaner core
367
+ # dumps when they are needed, uncomment the following:
368
+ #
369
+ # crash-log-enabled no
370
+
371
+ # To disable the fast memory check that's run as part of the crash log, which
372
+ # will possibly let redis terminate sooner, uncomment the following:
373
+ #
374
+ # crash-memcheck-enabled no
375
+
272
376
  # Set the number of databases. The default database is DB 0, you can select
273
377
  # a different one on a per-connection basis using SELECT <dbid> where
274
378
  # dbid is a number between 0 and 'databases'-1
275
379
  databases 16
276
380
 
277
381
  # By default Redis shows an ASCII art logo only when started to log to the
278
- # standard output and if the standard output is a TTY. Basically this means
279
- # that normally a logo is displayed only in interactive sessions.
382
+ # standard output and if the standard output is a TTY and syslog logging is
383
+ # disabled. Basically this means that normally a logo is displayed only in
384
+ # interactive sessions.
280
385
  #
281
386
  # However it is possible to force the pre-4.0 behavior and always show a
282
387
  # ASCII art logo in startup logs by setting the following option to yes.
283
- always-show-logo yes
388
+ always-show-logo no
389
+
390
+ # By default, Redis modifies the process title (as seen in 'top' and 'ps') to
391
+ # provide some runtime information. It is possible to disable this and leave
392
+ # the process name as executed by setting the following to no.
393
+ set-proc-title yes
394
+
395
+ # When changing the process title, Redis uses the following template to construct
396
+ # the modified title.
397
+ #
398
+ # Template variables are specified in curly brackets. The following variables are
399
+ # supported:
400
+ #
401
+ # {title} Name of process as executed if parent, or type of child process.
402
+ # {listen-addr} Bind address or '*' followed by TCP or TLS port listening on, or
403
+ # Unix socket if only that's available.
404
+ # {server-mode} Special mode, i.e. "[sentinel]" or "[cluster]".
405
+ # {port} TCP port listening on, or 0.
406
+ # {tls-port} TLS port listening on, or 0.
407
+ # {unixsocket} Unix domain socket listening on, or "".
408
+ # {config-file} Name of configuration file used.
409
+ #
410
+ proc-title-template "{title} {listen-addr} {server-mode}"
284
411
 
285
412
  ################################ SNAPSHOTTING ################################
413
+
414
+ # Save the DB to disk.
286
415
  #
287
- # Save the DB on disk:
416
+ # save <seconds> <changes> [<seconds> <changes> ...]
288
417
  #
289
- # save <seconds> <changes>
418
+ # Redis will save the DB if the given number of seconds elapsed and it
419
+ # surpassed the given number of write operations against the DB.
290
420
  #
291
- # Will save the DB if both the given number of seconds and the given
292
- # number of write operations against the DB occurred.
421
+ # Snapshotting can be completely disabled with a single empty string argument
422
+ # as in following example:
293
423
  #
294
- # In the example below the behavior will be to save:
295
- # after 900 sec (15 min) if at least 1 key changed
296
- # after 300 sec (5 min) if at least 10 keys changed
297
- # after 60 sec if at least 10000 keys changed
424
+ # save ""
298
425
  #
299
- # Note: you can disable saving completely by commenting out all "save" lines.
426
+ # Unless specified otherwise, by default Redis will save the DB:
427
+ # * After 3600 seconds (an hour) if at least 1 change was performed
428
+ # * After 300 seconds (5 minutes) if at least 100 changes were performed
429
+ # * After 60 seconds if at least 10000 changes were performed
300
430
  #
301
- # It is also possible to remove all the previously configured save
302
- # points by adding a save directive with a single empty string argument
303
- # like in the following example:
431
+ # You can set these explicitly by uncommenting the following line.
304
432
  #
305
- # save ""
306
-
307
- save 900 1
308
- save 300 10
309
- save 60 10000
433
+ # save 3600 1 300 100 60 10000
310
434
 
311
435
  # By default Redis will stop accepting writes if RDB snapshots are enabled
312
436
  # (at least one save point) and the latest background save failed.
@@ -338,6 +462,21 @@ rdbcompression yes
338
462
  # tell the loading code to skip the check.
339
463
  rdbchecksum yes
340
464
 
465
+ # Enables or disables full sanitization checks for ziplist and listpack etc when
466
+ # loading an RDB or RESTORE payload. This reduces the chances of a assertion or
467
+ # crash later on while processing commands.
468
+ # Options:
469
+ # no - Never perform full sanitization
470
+ # yes - Always perform full sanitization
471
+ # clients - Perform full sanitization only for user connections.
472
+ # Excludes: RDB files, RESTORE commands received from the master
473
+ # connection, and client connections which have the
474
+ # skip-sanitize-payload ACL flag.
475
+ # The default should be 'clients' but since it currently affects cluster
476
+ # resharding via MIGRATE, it is temporarily set to 'no' by default.
477
+ #
478
+ # sanitize-dump-payload no
479
+
341
480
  # The filename where to dump the DB
342
481
  dbfilename dump.rdb
343
482
 
@@ -412,9 +551,10 @@ dir ./
412
551
  # still reply to client requests, possibly with out of date data, or the
413
552
  # data set may just be empty if this is the first synchronization.
414
553
  #
415
- # 2) If replica-serve-stale-data is set to 'no' the replica will reply with
416
- # an error "SYNC with master in progress" to all commands except:
417
- # INFO, REPLICAOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE,
554
+ # 2) If replica-serve-stale-data is set to 'no' the replica will reply with error
555
+ # "MASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'"
556
+ # to all data access commands, excluding commands such as:
557
+ # INFO, REPLICAOF, AUTH, SHUTDOWN, REPLCONF, ROLE, CONFIG, SUBSCRIBE,
418
558
  # UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, COMMAND, POST,
419
559
  # HOST and LATENCY.
420
560
  #
@@ -463,7 +603,7 @@ replica-read-only yes
463
603
  #
464
604
  # With slow disks and fast (large bandwidth) networks, diskless replication
465
605
  # works better.
466
- repl-diskless-sync no
606
+ repl-diskless-sync yes
467
607
 
468
608
  # When diskless replication is enabled, it is possible to configure the delay
469
609
  # the server waits in order to spawn the child that transfers the RDB via socket
@@ -477,12 +617,18 @@ repl-diskless-sync no
477
617
  # it entirely just set it to 0 seconds and the transfer will start ASAP.
478
618
  repl-diskless-sync-delay 5
479
619
 
620
+ # When diskless replication is enabled with a delay, it is possible to let
621
+ # the replication start before the maximum delay is reached if the maximum
622
+ # number of replicas expected have connected. Default of 0 means that the
623
+ # maximum is not defined and Redis will wait the full delay.
624
+ repl-diskless-sync-max-replicas 0
625
+
480
626
  # -----------------------------------------------------------------------------
481
627
  # WARNING: RDB diskless load is experimental. Since in this setup the replica
482
628
  # does not immediately store an RDB on disk, it may cause data loss during
483
629
  # failovers. RDB diskless load + Redis modules not handling I/O reads may also
484
630
  # cause Redis to abort in case of I/O errors during the initial synchronization
485
- # stage with the master. Use only if your do what you are doing.
631
+ # stage with the master. Use only if you know what you are doing.
486
632
  # -----------------------------------------------------------------------------
487
633
  #
488
634
  # Replica can load the RDB it reads from the replication link directly from the
@@ -491,19 +637,23 @@ repl-diskless-sync-delay 5
491
637
  #
492
638
  # In many cases the disk is slower than the network, and storing and loading
493
639
  # the RDB file may increase replication time (and even increase the master's
494
- # Copy on Write memory and salve buffers).
640
+ # Copy on Write memory and replica buffers).
495
641
  # However, parsing the RDB file directly from the socket may mean that we have
496
642
  # to flush the contents of the current database before the full rdb was
497
643
  # received. For this reason we have the following options:
498
644
  #
499
645
  # "disabled" - Don't use diskless load (store the rdb file to the disk first)
500
646
  # "on-empty-db" - Use diskless load only when it is completely safe.
501
- # "swapdb" - Keep a copy of the current db contents in RAM while parsing
502
- # the data directly from the socket. note that this requires
503
- # sufficient memory, if you don't have it, you risk an OOM kill.
647
+ # "swapdb" - Keep current db contents in RAM while parsing the data directly
648
+ # from the socket. Replicas in this mode can keep serving current
649
+ # data set while replication is in progress, except for cases where
650
+ # they can't recognize master as having a data set from same
651
+ # replication history.
652
+ # Note that this requires sufficient memory, if you don't have it,
653
+ # you risk an OOM kill.
504
654
  repl-diskless-load disabled
505
655
 
506
- # Replicas send PINGs to server in a predefined interval. It's possible to
656
+ # Master send PINGs to its replicas in a predefined interval. It's possible to
507
657
  # change this interval with the repl_ping_replica_period option. The default
508
658
  # value is 10 seconds.
509
659
  #
@@ -578,6 +728,43 @@ repl-disable-tcp-nodelay no
578
728
  # By default the priority is 100.
579
729
  replica-priority 100
580
730
 
731
+ # The propagation error behavior controls how Redis will behave when it is
732
+ # unable to handle a command being processed in the replication stream from a master
733
+ # or processed while reading from an AOF file. Errors that occur during propagation
734
+ # are unexpected, and can cause data inconsistency. However, there are edge cases
735
+ # in earlier versions of Redis where it was possible for the server to replicate or persist
736
+ # commands that would fail on future versions. For this reason the default behavior
737
+ # is to ignore such errors and continue processing commands.
738
+ #
739
+ # If an application wants to ensure there is no data divergence, this configuration
740
+ # should be set to 'panic' instead. The value can also be set to 'panic-on-replicas'
741
+ # to only panic when a replica encounters an error on the replication stream. One of
742
+ # these two panic values will become the default value in the future once there are
743
+ # sufficient safety mechanisms in place to prevent false positive crashes.
744
+ #
745
+ # propagation-error-behavior ignore
746
+
747
+ # Replica ignore disk write errors controls the behavior of a replica when it is
748
+ # unable to persist a write command received from its master to disk. By default,
749
+ # this configuration is set to 'no' and will crash the replica in this condition.
750
+ # It is not recommended to change this default, however in order to be compatible
751
+ # with older versions of Redis this config can be toggled to 'yes' which will just
752
+ # log a warning and execute the write command it got from the master.
753
+ #
754
+ # replica-ignore-disk-write-errors no
755
+
756
+ # -----------------------------------------------------------------------------
757
+ # By default, Redis Sentinel includes all replicas in its reports. A replica
758
+ # can be excluded from Redis Sentinel's announcements. An unannounced replica
759
+ # will be ignored by the 'sentinel replicas <master>' command and won't be
760
+ # exposed to Redis Sentinel's clients.
761
+ #
762
+ # This option does not change the behavior of replica-priority. Even with
763
+ # replica-announced set to 'no', the replica can be promoted to master. To
764
+ # prevent this behavior, set replica-priority to 0.
765
+ #
766
+ # replica-announced yes
767
+
581
768
  # It is possible for a master to stop accepting writes if there are less than
582
769
  # N replicas connected, having a lag less or equal than M seconds.
583
770
  #
@@ -633,7 +820,7 @@ replica-priority 100
633
820
 
634
821
  # Redis implements server assisted support for client side caching of values.
635
822
  # This is implemented using an invalidation table that remembers, using
636
- # 16 millions of slots, what clients may have certain subsets of keys. In turn
823
+ # a radix key indexed by key name, what clients have which keys. In turn
637
824
  # this is used in order to send invalidation messages to clients. Please
638
825
  # check this page to understand more about the feature:
639
826
  #
@@ -697,8 +884,12 @@ replica-priority 100
697
884
  # off Disable the user: it's no longer possible to authenticate
698
885
  # with this user, however the already authenticated connections
699
886
  # will still work.
700
- # +<command> Allow the execution of that command
701
- # -<command> Disallow the execution of that command
887
+ # skip-sanitize-payload RESTORE dump-payload sanitization is skipped.
888
+ # sanitize-payload RESTORE dump-payload is sanitized (default).
889
+ # +<command> Allow the execution of that command.
890
+ # May be used with `|` for allowing subcommands (e.g "+config|get")
891
+ # -<command> Disallow the execution of that command.
892
+ # May be used with `|` for blocking subcommands (e.g "-config|set")
702
893
  # +@<category> Allow the execution of all the commands in such category
703
894
  # with valid categories are like @admin, @set, @sortedset, ...
704
895
  # and so forth, see the full list in the server.c file where
@@ -706,10 +897,11 @@ replica-priority 100
706
897
  # The special category @all means all the commands, but currently
707
898
  # present in the server, and that will be loaded in the future
708
899
  # via modules.
709
- # +<command>|subcommand Allow a specific subcommand of an otherwise
710
- # disabled command. Note that this form is not
711
- # allowed as negative like -DEBUG|SEGFAULT, but
712
- # only additive starting with "+".
900
+ # +<command>|first-arg Allow a specific first argument of an otherwise
901
+ # disabled command. It is only supported on commands with
902
+ # no sub-commands, and is not allowed as negative form
903
+ # like -SELECT|1, only additive starting with "+". This
904
+ # feature is deprecated and may be removed in the future.
713
905
  # allcommands Alias for +@all. Note that it implies the ability to execute
714
906
  # all the future commands loaded via the modules system.
715
907
  # nocommands Alias for -@all.
@@ -717,8 +909,17 @@ replica-priority 100
717
909
  # commands. For instance ~* allows all the keys. The pattern
718
910
  # is a glob-style pattern like the one of KEYS.
719
911
  # It is possible to specify multiple patterns.
912
+ # %R~<pattern> Add key read pattern that specifies which keys can be read
913
+ # from.
914
+ # %W~<pattern> Add key write pattern that specifies which keys can be
915
+ # written to.
720
916
  # allkeys Alias for ~*
721
917
  # resetkeys Flush the list of allowed keys patterns.
918
+ # &<pattern> Add a glob-style pattern of Pub/Sub channels that can be
919
+ # accessed by the user. It is possible to specify multiple channel
920
+ # patterns.
921
+ # allchannels Alias for &*
922
+ # resetchannels Flush the list of allowed channel patterns.
722
923
  # ><password> Add this password to the list of valid password for the user.
723
924
  # For example >mypass will add "mypass" to the list.
724
925
  # This directive clears the "nopass" flag (see later).
@@ -737,6 +938,14 @@ replica-priority 100
737
938
  # reset Performs the following actions: resetpass, resetkeys, off,
738
939
  # -@all. The user returns to the same state it has immediately
739
940
  # after its creation.
941
+ # (<options>) Create a new selector with the options specified within the
942
+ # parentheses and attach it to the user. Each option should be
943
+ # space separated. The first character must be ( and the last
944
+ # character must be ).
945
+ # clearselectors Remove all of the currently attached selectors.
946
+ # Note this does not change the "root" user permissions,
947
+ # which are the permissions directly applied onto the
948
+ # user (outside the parentheses).
740
949
  #
741
950
  # ACL rules can be specified in any order: for instance you can start with
742
951
  # passwords, then flags, or key patterns. However note that the additive
@@ -758,6 +967,40 @@ replica-priority 100
758
967
  #
759
968
  # Basically ACL rules are processed left-to-right.
760
969
  #
970
+ # The following is a list of command categories and their meanings:
971
+ # * keyspace - Writing or reading from keys, databases, or their metadata
972
+ # in a type agnostic way. Includes DEL, RESTORE, DUMP, RENAME, EXISTS, DBSIZE,
973
+ # KEYS, EXPIRE, TTL, FLUSHALL, etc. Commands that may modify the keyspace,
974
+ # key or metadata will also have `write` category. Commands that only read
975
+ # the keyspace, key or metadata will have the `read` category.
976
+ # * read - Reading from keys (values or metadata). Note that commands that don't
977
+ # interact with keys, will not have either `read` or `write`.
978
+ # * write - Writing to keys (values or metadata)
979
+ # * admin - Administrative commands. Normal applications will never need to use
980
+ # these. Includes REPLICAOF, CONFIG, DEBUG, SAVE, MONITOR, ACL, SHUTDOWN, etc.
981
+ # * dangerous - Potentially dangerous (each should be considered with care for
982
+ # various reasons). This includes FLUSHALL, MIGRATE, RESTORE, SORT, KEYS,
983
+ # CLIENT, DEBUG, INFO, CONFIG, SAVE, REPLICAOF, etc.
984
+ # * connection - Commands affecting the connection or other connections.
985
+ # This includes AUTH, SELECT, COMMAND, CLIENT, ECHO, PING, etc.
986
+ # * blocking - Potentially blocking the connection until released by another
987
+ # command.
988
+ # * fast - Fast O(1) commands. May loop on the number of arguments, but not the
989
+ # number of elements in the key.
990
+ # * slow - All commands that are not Fast.
991
+ # * pubsub - PUBLISH / SUBSCRIBE related
992
+ # * transaction - WATCH / MULTI / EXEC related commands.
993
+ # * scripting - Scripting related.
994
+ # * set - Data type: sets related.
995
+ # * sortedset - Data type: zsets related.
996
+ # * list - Data type: lists related.
997
+ # * hash - Data type: hashes related.
998
+ # * string - Data type: strings related.
999
+ # * bitmap - Data type: bitmaps related.
1000
+ # * hyperloglog - Data type: hyperloglog related.
1001
+ # * geo - Data type: geo related.
1002
+ # * stream - Data type: streams related.
1003
+ #
761
1004
  # For more information about ACL configuration please refer to
762
1005
  # the Redis web site at https://redis.io/topics/acl
763
1006
 
@@ -787,8 +1030,24 @@ acllog-max-len 128
787
1030
  # AUTH <password> as usually, or more explicitly with AUTH default <password>
788
1031
  # if they follow the new protocol: both will work.
789
1032
  #
1033
+ # The requirepass is not compatible with aclfile option and the ACL LOAD
1034
+ # command, these will cause requirepass to be ignored.
1035
+ #
790
1036
  # requirepass foobared
791
1037
 
1038
+ # New users are initialized with restrictive permissions by default, via the
1039
+ # equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it
1040
+ # is possible to manage access to Pub/Sub channels with ACL rules as well. The
1041
+ # default Pub/Sub channels permission if new users is controlled by the
1042
+ # acl-pubsub-default configuration directive, which accepts one of these values:
1043
+ #
1044
+ # allchannels: grants access to all Pub/Sub channels
1045
+ # resetchannels: revokes access to all Pub/Sub channels
1046
+ #
1047
+ # From Redis 7.0, acl-pubsub-default defaults to 'resetchannels' permission.
1048
+ #
1049
+ # acl-pubsub-default resetchannels
1050
+
792
1051
  # Command renaming (DEPRECATED).
793
1052
  #
794
1053
  # ------------------------------------------------------------------------
@@ -877,14 +1136,12 @@ acllog-max-len 128
877
1136
  # Both LRU, LFU and volatile-ttl are implemented using approximated
878
1137
  # randomized algorithms.
879
1138
  #
880
- # Note: with any of the above policies, Redis will return an error on write
881
- # operations, when there are no suitable keys for eviction.
882
- #
883
- # At the date of writing these commands are: set setnx setex append
884
- # incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
885
- # sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
886
- # zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
887
- # getset mset msetnx exec sort
1139
+ # Note: with any of the above policies, when there are no suitable keys for
1140
+ # eviction, Redis will return an error on write operations that require
1141
+ # more memory. These are usually commands that create new keys, add data or
1142
+ # modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE,
1143
+ # SORT (due to the STORE argument), and EXEC (if the transaction includes any
1144
+ # command that requires memory).
888
1145
  #
889
1146
  # The default is:
890
1147
  #
@@ -901,6 +1158,14 @@ acllog-max-len 128
901
1158
  #
902
1159
  # maxmemory-samples 5
903
1160
 
1161
+ # Eviction processing is designed to function well with the default setting.
1162
+ # If there is an unusually large amount of write traffic, this value may need to
1163
+ # be increased. Decreasing this value may reduce latency at the risk of
1164
+ # eviction processing effectiveness
1165
+ # 0 = minimum latency, 10 = default, 100 = process without regard to latency
1166
+ #
1167
+ # maxmemory-eviction-tenacity 10
1168
+
904
1169
  # Starting from Redis 5, by default a replica will ignore its maxmemory setting
905
1170
  # (unless it is promoted to master after a failover or manually). It means
906
1171
  # that the eviction of keys will be just handled by the master, sending the
@@ -994,6 +1259,13 @@ replica-lazy-flush no
994
1259
 
995
1260
  lazyfree-lazy-user-del no
996
1261
 
1262
+ # FLUSHDB, FLUSHALL, SCRIPT FLUSH and FUNCTION FLUSH support both asynchronous and synchronous
1263
+ # deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the
1264
+ # commands. When neither flag is passed, this directive will be used to determine
1265
+ # if the data should be deleted asynchronously.
1266
+
1267
+ lazyfree-lazy-user-flush no
1268
+
997
1269
  ################################ THREADED I/O #################################
998
1270
 
999
1271
  # Redis is mostly single threaded, however there are certain threaded
@@ -1032,7 +1304,7 @@ lazyfree-lazy-user-del no
1032
1304
  # Usually threading reads doesn't help much.
1033
1305
  #
1034
1306
  # NOTE 1: This configuration directive cannot be changed at runtime via
1035
- # CONFIG SET. Aso this feature currently does not work when SSL is
1307
+ # CONFIG SET. Also, this feature currently does not work when SSL is
1036
1308
  # enabled.
1037
1309
  #
1038
1310
  # NOTE 2: If you want to test the Redis speedup using redis-benchmark, make
@@ -1050,7 +1322,7 @@ lazyfree-lazy-user-del no
1050
1322
  # attempt to have background child processes killed before all others, and
1051
1323
  # replicas killed before masters.
1052
1324
  #
1053
- # Redis supports three options:
1325
+ # Redis supports these options:
1054
1326
  #
1055
1327
  # no: Don't make changes to oom-score-adj (default).
1056
1328
  # yes: Alias to "relative" see below.
@@ -1071,6 +1343,19 @@ oom-score-adj no
1071
1343
  # oom-score-adj-values to positive values will always succeed.
1072
1344
  oom-score-adj-values 0 200 800
1073
1345
 
1346
+
1347
+ #################### KERNEL transparent hugepage CONTROL ######################
1348
+
1349
+ # Usually the kernel Transparent Huge Pages control is set to "madvise" or
1350
+ # or "never" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which
1351
+ # case this config has no effect. On systems in which it is set to "always",
1352
+ # redis will attempt to disable it specifically for the redis process in order
1353
+ # to avoid latency problems specifically with fork(2) and CoW.
1354
+ # If for some reason you prefer to keep it enabled, you can set this config to
1355
+ # "no" and the kernel global to "always".
1356
+
1357
+ disable-thp yes
1358
+
1074
1359
  ############################## APPEND ONLY MODE ###############################
1075
1360
 
1076
1361
  # By default Redis asynchronously dumps the dataset on disk. This mode is
@@ -1089,14 +1374,43 @@ oom-score-adj-values 0 200 800
1089
1374
  # If the AOF is enabled on startup Redis will load the AOF, that is the file
1090
1375
  # with the better durability guarantees.
1091
1376
  #
1092
- # Please check http://redis.io/topics/persistence for more information.
1377
+ # Please check https://redis.io/topics/persistence for more information.
1093
1378
 
1094
1379
  appendonly no
1095
1380
 
1096
- # The name of the append only file (default: "appendonly.aof")
1381
+ # The base name of the append only file.
1382
+ #
1383
+ # Redis 7 and newer use a set of append-only files to persist the dataset
1384
+ # and changes applied to it. There are two basic types of files in use:
1385
+ #
1386
+ # - Base files, which are a snapshot representing the complete state of the
1387
+ # dataset at the time the file was created. Base files can be either in
1388
+ # the form of RDB (binary serialized) or AOF (textual commands).
1389
+ # - Incremental files, which contain additional commands that were applied
1390
+ # to the dataset following the previous file.
1391
+ #
1392
+ # In addition, manifest files are used to track the files and the order in
1393
+ # which they were created and should be applied.
1394
+ #
1395
+ # Append-only file names are created by Redis following a specific pattern.
1396
+ # The file name's prefix is based on the 'appendfilename' configuration
1397
+ # parameter, followed by additional information about the sequence and type.
1398
+ #
1399
+ # For example, if appendfilename is set to appendonly.aof, the following file
1400
+ # names could be derived:
1401
+ #
1402
+ # - appendonly.aof.1.base.rdb as a base file.
1403
+ # - appendonly.aof.1.incr.aof, appendonly.aof.2.incr.aof as incremental files.
1404
+ # - appendonly.aof.manifest as a manifest file.
1097
1405
 
1098
1406
  appendfilename "appendonly.aof"
1099
1407
 
1408
+ # For convenience, Redis stores all persistent append-only files in a dedicated
1409
+ # directory. The name of the directory is determined by the appenddirname
1410
+ # configuration parameter.
1411
+
1412
+ appenddirname "appendonlydir"
1413
+
1100
1414
  # The fsync() call tells the Operating System to actually write data on disk
1101
1415
  # instead of waiting for more data in the output buffer. Some OS will really flush
1102
1416
  # data on disk, some other OS will just try to do it ASAP.
@@ -1189,34 +1503,69 @@ auto-aof-rewrite-min-size 64mb
1189
1503
  # will be found.
1190
1504
  aof-load-truncated yes
1191
1505
 
1192
- # When rewriting the AOF file, Redis is able to use an RDB preamble in the
1193
- # AOF file for faster rewrites and recoveries. When this option is turned
1194
- # on the rewritten AOF file is composed of two different stanzas:
1506
+ # Redis can create append-only base files in either RDB or AOF formats. Using
1507
+ # the RDB format is always faster and more efficient, and disabling it is only
1508
+ # supported for backward compatibility purposes.
1509
+ aof-use-rdb-preamble yes
1510
+
1511
+ # Redis supports recording timestamp annotations in the AOF to support restoring
1512
+ # the data from a specific point-in-time. However, using this capability changes
1513
+ # the AOF format in a way that may not be compatible with existing AOF parsers.
1514
+ aof-timestamp-enabled no
1515
+
1516
+ ################################ SHUTDOWN #####################################
1517
+
1518
+ # Maximum time to wait for replicas when shutting down, in seconds.
1195
1519
  #
1196
- # [RDB file][AOF tail]
1520
+ # During shut down, a grace period allows any lagging replicas to catch up with
1521
+ # the latest replication offset before the master exists. This period can
1522
+ # prevent data loss, especially for deployments without configured disk backups.
1197
1523
  #
1198
- # When loading, Redis recognizes that the AOF file starts with the "REDIS"
1199
- # string and loads the prefixed RDB file, then continues loading the AOF
1200
- # tail.
1201
- aof-use-rdb-preamble yes
1524
+ # The 'shutdown-timeout' value is the grace period's duration in seconds. It is
1525
+ # only applicable when the instance has replicas. To disable the feature, set
1526
+ # the value to 0.
1527
+ #
1528
+ # shutdown-timeout 10
1529
+
1530
+ # When Redis receives a SIGINT or SIGTERM, shutdown is initiated and by default
1531
+ # an RDB snapshot is written to disk in a blocking operation if save points are configured.
1532
+ # The options used on signaled shutdown can include the following values:
1533
+ # default: Saves RDB snapshot only if save points are configured.
1534
+ # Waits for lagging replicas to catch up.
1535
+ # save: Forces a DB saving operation even if no save points are configured.
1536
+ # nosave: Prevents DB saving operation even if one or more save points are configured.
1537
+ # now: Skips waiting for lagging replicas.
1538
+ # force: Ignores any errors that would normally prevent the server from exiting.
1539
+ #
1540
+ # Any combination of values is allowed as long as "save" and "nosave" are not set simultaneously.
1541
+ # Example: "nosave force now"
1542
+ #
1543
+ # shutdown-on-sigint default
1544
+ # shutdown-on-sigterm default
1202
1545
 
1203
- ################################ LUA SCRIPTING ###############################
1546
+ ################ NON-DETERMINISTIC LONG BLOCKING COMMANDS #####################
1204
1547
 
1205
- # Max execution time of a Lua script in milliseconds.
1548
+ # Maximum time in milliseconds for EVAL scripts, functions and in some cases
1549
+ # modules' commands before Redis can start processing or rejecting other clients.
1206
1550
  #
1207
- # If the maximum execution time is reached Redis will log that a script is
1208
- # still in execution after the maximum allowed time and will start to
1209
- # reply to queries with an error.
1551
+ # If the maximum execution time is reached Redis will start to reply to most
1552
+ # commands with a BUSY error.
1210
1553
  #
1211
- # When a long running script exceeds the maximum execution time only the
1212
- # SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be
1213
- # used to stop a script that did not yet call any write commands. The second
1214
- # is the only way to shut down the server in the case a write command was
1215
- # already issued by the script but the user doesn't want to wait for the natural
1216
- # termination of the script.
1554
+ # In this state Redis will only allow a handful of commands to be executed.
1555
+ # For instance, SCRIPT KILL, FUNCTION KILL, SHUTDOWN NOSAVE and possibly some
1556
+ # module specific 'allow-busy' commands.
1217
1557
  #
1218
- # Set it to 0 or a negative value for unlimited execution without warnings.
1219
- lua-time-limit 5000
1558
+ # SCRIPT KILL and FUNCTION KILL will only be able to stop a script that did not
1559
+ # yet call any write commands, so SHUTDOWN NOSAVE may be the only way to stop
1560
+ # the server in the case a write command was already issued by the script when
1561
+ # the user doesn't want to wait for the natural termination of the script.
1562
+ #
1563
+ # The default is 5 seconds. It is possible to set it to 0 or a negative value
1564
+ # to disable this mechanism (uninterrupted execution). Note that in the past
1565
+ # this config had a different name, which is now an alias, so both of these do
1566
+ # the same:
1567
+ # lua-time-limit 5000
1568
+ # busy-reply-threshold 5000
1220
1569
 
1221
1570
  ################################ REDIS CLUSTER ###############################
1222
1571
 
@@ -1240,6 +1589,11 @@ lua-time-limit 5000
1240
1589
  #
1241
1590
  # cluster-node-timeout 15000
1242
1591
 
1592
+ # The cluster port is the port that the cluster bus will listen for inbound connections on. When set
1593
+ # to the default value, 0, it will be bound to the command port + 10000. Setting this value requires
1594
+ # you to specify the cluster bus port when executing cluster meet.
1595
+ # cluster-port 0
1596
+
1243
1597
  # A replica of a failing master will avoid to start a failover if its data
1244
1598
  # looks too old.
1245
1599
  #
@@ -1298,12 +1652,21 @@ lua-time-limit 5000
1298
1652
  # master in your cluster.
1299
1653
  #
1300
1654
  # Default is 1 (replicas migrate only if their masters remain with at least
1301
- # one replica). To disable migration just set it to a very large value.
1655
+ # one replica). To disable migration just set it to a very large value or
1656
+ # set cluster-allow-replica-migration to 'no'.
1302
1657
  # A value of 0 can be set but is useful only for debugging and dangerous
1303
1658
  # in production.
1304
1659
  #
1305
1660
  # cluster-migration-barrier 1
1306
1661
 
1662
+ # Turning off this option allows to use less automatic cluster configuration.
1663
+ # It both disables migration to orphaned masters and migration from masters
1664
+ # that became empty.
1665
+ #
1666
+ # Default is 'yes' (allow automatic migrations).
1667
+ #
1668
+ # cluster-allow-replica-migration yes
1669
+
1307
1670
  # By default Redis Cluster nodes stop accepting queries if they detect there
1308
1671
  # is at least a hash slot uncovered (no available node is serving it).
1309
1672
  # This way if the cluster is partially down (for example a range of hash slots
@@ -1318,7 +1681,7 @@ lua-time-limit 5000
1318
1681
  # cluster-require-full-coverage yes
1319
1682
 
1320
1683
  # This option, when set to yes, prevents replicas from trying to failover its
1321
- # master during master failures. However the master can still perform a
1684
+ # master during master failures. However the replica can still perform a
1322
1685
  # manual failover, if forced to do so.
1323
1686
  #
1324
1687
  # This is useful in different scenarios, especially in the case of multiple
@@ -1328,7 +1691,7 @@ lua-time-limit 5000
1328
1691
  # cluster-replica-no-failover no
1329
1692
 
1330
1693
  # This option, when set to yes, allows nodes to serve read traffic while the
1331
- # the cluster is in a down state, as long as it believes it owns the slots.
1694
+ # cluster is in a down state, as long as it believes it owns the slots.
1332
1695
  #
1333
1696
  # This is useful for two cases. The first case is for when an application
1334
1697
  # doesn't require consistency of data during node failures or network partitions.
@@ -1343,8 +1706,54 @@ lua-time-limit 5000
1343
1706
  #
1344
1707
  # cluster-allow-reads-when-down no
1345
1708
 
1709
+ # This option, when set to yes, allows nodes to serve pubsub shard traffic while
1710
+ # the cluster is in a down state, as long as it believes it owns the slots.
1711
+ #
1712
+ # This is useful if the application would like to use the pubsub feature even when
1713
+ # the cluster global stable state is not OK. If the application wants to make sure only
1714
+ # one shard is serving a given channel, this feature should be kept as yes.
1715
+ #
1716
+ # cluster-allow-pubsubshard-when-down yes
1717
+
1718
+ # Cluster link send buffer limit is the limit on the memory usage of an individual
1719
+ # cluster bus link's send buffer in bytes. Cluster links would be freed if they exceed
1720
+ # this limit. This is to primarily prevent send buffers from growing unbounded on links
1721
+ # toward slow peers (E.g. PubSub messages being piled up).
1722
+ # This limit is disabled by default. Enable this limit when 'mem_cluster_links' INFO field
1723
+ # and/or 'send-buffer-allocated' entries in the 'CLUSTER LINKS` command output continuously increase.
1724
+ # Minimum limit of 1gb is recommended so that cluster link buffer can fit in at least a single
1725
+ # PubSub message by default. (client-query-buffer-limit default value is 1gb)
1726
+ #
1727
+ # cluster-link-sendbuf-limit 0
1728
+
1729
+ # Clusters can configure their announced hostname using this config. This is a common use case for
1730
+ # applications that need to use TLS Server Name Indication (SNI) or dealing with DNS based
1731
+ # routing. By default this value is only shown as additional metadata in the CLUSTER SLOTS
1732
+ # command, but can be changed using 'cluster-preferred-endpoint-type' config. This value is
1733
+ # communicated along the clusterbus to all nodes, setting it to an empty string will remove
1734
+ # the hostname and also propagate the removal.
1735
+ #
1736
+ # cluster-announce-hostname ""
1737
+
1738
+ # Clusters can advertise how clients should connect to them using either their IP address,
1739
+ # a user defined hostname, or by declaring they have no endpoint. Which endpoint is
1740
+ # shown as the preferred endpoint is set by using the cluster-preferred-endpoint-type
1741
+ # config with values 'ip', 'hostname', or 'unknown-endpoint'. This value controls how
1742
+ # the endpoint returned for MOVED/ASKING requests as well as the first field of CLUSTER SLOTS.
1743
+ # If the preferred endpoint type is set to hostname, but no announced hostname is set, a '?'
1744
+ # will be returned instead.
1745
+ #
1746
+ # When a cluster advertises itself as having an unknown endpoint, it's indicating that
1747
+ # the server doesn't know how clients can reach the cluster. This can happen in certain
1748
+ # networking situations where there are multiple possible routes to the node, and the
1749
+ # server doesn't know which one the client took. In this case, the server is expecting
1750
+ # the client to reach out on the same endpoint it used for making the last request, but use
1751
+ # the port provided in the response.
1752
+ #
1753
+ # cluster-preferred-endpoint-type ip
1754
+
1346
1755
  # In order to setup your cluster make sure to read the documentation
1347
- # available at http://redis.io web site.
1756
+ # available at https://redis.io web site.
1348
1757
 
1349
1758
  ########################## CLUSTER DOCKER/NAT support ########################
1350
1759
 
@@ -1354,16 +1763,21 @@ lua-time-limit 5000
1354
1763
  #
1355
1764
  # In order to make Redis Cluster working in such environments, a static
1356
1765
  # configuration where each node knows its public address is needed. The
1357
- # following two options are used for this scope, and are:
1766
+ # following four options are used for this scope, and are:
1358
1767
  #
1359
1768
  # * cluster-announce-ip
1360
1769
  # * cluster-announce-port
1770
+ # * cluster-announce-tls-port
1361
1771
  # * cluster-announce-bus-port
1362
1772
  #
1363
- # Each instructs the node about its address, client port, and cluster message
1364
- # bus port. The information is then published in the header of the bus packets
1365
- # so that other nodes will be able to correctly map the address of the node
1366
- # publishing the information.
1773
+ # Each instructs the node about its address, client ports (for connections
1774
+ # without and with TLS) and cluster message bus port. The information is then
1775
+ # published in the header of the bus packets so that other nodes will be able to
1776
+ # correctly map the address of the node publishing the information.
1777
+ #
1778
+ # If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set
1779
+ # to zero, then cluster-announce-port refers to the TLS port. Note also that
1780
+ # cluster-announce-tls-port has no effect if cluster-tls is set to no.
1367
1781
  #
1368
1782
  # If the above options are not used, the normal Redis Cluster auto-detection
1369
1783
  # will be used instead.
@@ -1376,7 +1790,8 @@ lua-time-limit 5000
1376
1790
  # Example:
1377
1791
  #
1378
1792
  # cluster-announce-ip 10.1.1.5
1379
- # cluster-announce-port 6379
1793
+ # cluster-announce-tls-port 6379
1794
+ # cluster-announce-port 0
1380
1795
  # cluster-announce-bus-port 6380
1381
1796
 
1382
1797
  ################################## SLOW LOG ###################################
@@ -1424,10 +1839,24 @@ slowlog-max-len 128
1424
1839
  # "CONFIG SET latency-monitor-threshold <milliseconds>" if needed.
1425
1840
  latency-monitor-threshold 0
1426
1841
 
1842
+ ################################ LATENCY TRACKING ##############################
1843
+
1844
+ # The Redis extended latency monitoring tracks the per command latencies and enables
1845
+ # exporting the percentile distribution via the INFO latencystats command,
1846
+ # and cumulative latency distributions (histograms) via the LATENCY command.
1847
+ #
1848
+ # By default, the extended latency monitoring is enabled since the overhead
1849
+ # of keeping track of the command latency is very small.
1850
+ # latency-tracking yes
1851
+
1852
+ # By default the exported latency percentiles via the INFO latencystats command
1853
+ # are the p50, p99, and p999.
1854
+ # latency-tracking-info-percentiles 50 99 99.9
1855
+
1427
1856
  ############################# EVENT NOTIFICATION ##############################
1428
1857
 
1429
1858
  # Redis can notify Pub/Sub clients about events happening in the key space.
1430
- # This feature is documented at http://redis.io/topics/notifications
1859
+ # This feature is documented at https://redis.io/topics/notifications
1431
1860
  #
1432
1861
  # For instance if keyspace events notification is enabled, and a client
1433
1862
  # performs a DEL operation on key "foo" stored in the Database 0, two
@@ -1449,9 +1878,11 @@ latency-monitor-threshold 0
1449
1878
  # z Sorted set commands
1450
1879
  # x Expired events (events generated every time a key expires)
1451
1880
  # e Evicted events (events generated when a key is evicted for maxmemory)
1881
+ # n New key events (Note: not included in the 'A' class)
1452
1882
  # t Stream commands
1883
+ # d Module key type events
1453
1884
  # m Key-miss events (Note: It is not included in the 'A' class)
1454
- # A Alias for g$lshzxet, so that the "AKE" string means all the events
1885
+ # A Alias for g$lshzxetd, so that the "AKE" string means all the events
1455
1886
  # (Except key-miss events which are excluded from 'A' due to their
1456
1887
  # unique nature).
1457
1888
  #
@@ -1474,71 +1905,13 @@ latency-monitor-threshold 0
1474
1905
  # specify at least one of K or E, no events will be delivered.
1475
1906
  notify-keyspace-events ""
1476
1907
 
1477
- ############################### GOPHER SERVER #################################
1478
-
1479
- # Redis contains an implementation of the Gopher protocol, as specified in
1480
- # the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt).
1481
- #
1482
- # The Gopher protocol was very popular in the late '90s. It is an alternative
1483
- # to the web, and the implementation both server and client side is so simple
1484
- # that the Redis server has just 100 lines of code in order to implement this
1485
- # support.
1486
- #
1487
- # What do you do with Gopher nowadays? Well Gopher never *really* died, and
1488
- # lately there is a movement in order for the Gopher more hierarchical content
1489
- # composed of just plain text documents to be resurrected. Some want a simpler
1490
- # internet, others believe that the mainstream internet became too much
1491
- # controlled, and it's cool to create an alternative space for people that
1492
- # want a bit of fresh air.
1493
- #
1494
- # Anyway for the 10nth birthday of the Redis, we gave it the Gopher protocol
1495
- # as a gift.
1496
- #
1497
- # --- HOW IT WORKS? ---
1498
- #
1499
- # The Redis Gopher support uses the inline protocol of Redis, and specifically
1500
- # two kind of inline requests that were anyway illegal: an empty request
1501
- # or any request that starts with "/" (there are no Redis commands starting
1502
- # with such a slash). Normal RESP2/RESP3 requests are completely out of the
1503
- # path of the Gopher protocol implementation and are served as usual as well.
1504
- #
1505
- # If you open a connection to Redis when Gopher is enabled and send it
1506
- # a string like "/foo", if there is a key named "/foo" it is served via the
1507
- # Gopher protocol.
1508
- #
1509
- # In order to create a real Gopher "hole" (the name of a Gopher site in Gopher
1510
- # talking), you likely need a script like the following:
1511
- #
1512
- # https://github.com/antirez/gopher2redis
1513
- #
1514
- # --- SECURITY WARNING ---
1515
- #
1516
- # If you plan to put Redis on the internet in a publicly accessible address
1517
- # to server Gopher pages MAKE SURE TO SET A PASSWORD to the instance.
1518
- # Once a password is set:
1519
- #
1520
- # 1. The Gopher server (when enabled, not by default) will still serve
1521
- # content via Gopher.
1522
- # 2. However other commands cannot be called before the client will
1523
- # authenticate.
1524
- #
1525
- # So use the 'requirepass' option to protect your instance.
1526
- #
1527
- # Note that Gopher is not currently supported when 'io-threads-do-reads'
1528
- # is enabled.
1529
- #
1530
- # To enable Gopher support, uncomment the following line and set the option
1531
- # from no (the default) to yes.
1532
- #
1533
- # gopher-enabled no
1534
-
1535
1908
  ############################### ADVANCED CONFIG ###############################
1536
1909
 
1537
1910
  # Hashes are encoded using a memory efficient data structure when they have a
1538
1911
  # small number of entries, and the biggest entry does not exceed a given
1539
1912
  # threshold. These thresholds can be configured using the following directives.
1540
- hash-max-ziplist-entries 512
1541
- hash-max-ziplist-value 64
1913
+ hash-max-listpack-entries 512
1914
+ hash-max-listpack-value 64
1542
1915
 
1543
1916
  # Lists are also encoded in a special way to save a lot of space.
1544
1917
  # The number of entries allowed per internal list node can be specified
@@ -1553,7 +1926,7 @@ hash-max-ziplist-value 64
1553
1926
  # per list node.
1554
1927
  # The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size),
1555
1928
  # but if your use case is unique, adjust the settings as necessary.
1556
- list-max-ziplist-size -2
1929
+ list-max-listpack-size -2
1557
1930
 
1558
1931
  # Lists may also be compressed.
1559
1932
  # Compress depth is the number of quicklist ziplist nodes from *each* side of
@@ -1581,8 +1954,8 @@ set-max-intset-entries 512
1581
1954
  # Similarly to hashes and lists, sorted sets are also specially encoded in
1582
1955
  # order to save a lot of space. This encoding is only used when the length and
1583
1956
  # elements of a sorted set are below the following limits:
1584
- zset-max-ziplist-entries 128
1585
- zset-max-ziplist-value 64
1957
+ zset-max-listpack-entries 128
1958
+ zset-max-listpack-value 64
1586
1959
 
1587
1960
  # HyperLogLog sparse representation bytes limit. The limit includes the
1588
1961
  # 16 bytes header. When an HyperLogLog using the sparse representation crosses
@@ -1604,7 +1977,7 @@ hll-sparse-max-bytes 3000
1604
1977
  # maximum number of items it may contain before switching to a new node when
1605
1978
  # appending new stream entries. If any of the following settings are set to
1606
1979
  # zero, the limit is ignored, so for instance it is possible to set just a
1607
- # max entires limit by setting max-bytes to 0 and max-entries to the desired
1980
+ # max entries limit by setting max-bytes to 0 and max-entries to the desired
1608
1981
  # value.
1609
1982
  stream-node-max-bytes 4096
1610
1983
  stream-node-max-entries 100
@@ -1637,7 +2010,7 @@ activerehashing yes
1637
2010
  # The limit can be set differently for the three different classes of clients:
1638
2011
  #
1639
2012
  # normal -> normal clients including MONITOR clients
1640
- # replica -> replica clients
2013
+ # replica -> replica clients
1641
2014
  # pubsub -> clients subscribed to at least one pubsub channel or pattern
1642
2015
  #
1643
2016
  # The syntax of every client-output-buffer-limit directive is the following:
@@ -1661,6 +2034,13 @@ activerehashing yes
1661
2034
  # Instead there is a default limit for pubsub and replica clients, since
1662
2035
  # subscribers and replicas receive data in a push fashion.
1663
2036
  #
2037
+ # Note that it doesn't make sense to set the replica clients output buffer
2038
+ # limit lower than the repl-backlog-size config (partial sync will succeed
2039
+ # and then replica will get disconnected).
2040
+ # Such a configuration is ignored (the size of repl-backlog-size will be used).
2041
+ # This doesn't have memory consumption implications since the replica client
2042
+ # will share the backlog buffers memory.
2043
+ #
1664
2044
  # Both the hard or the soft limit can be disabled by setting them to zero.
1665
2045
  client-output-buffer-limit normal 0 0 0
1666
2046
  client-output-buffer-limit replica 256mb 64mb 60
@@ -1674,6 +2054,25 @@ client-output-buffer-limit pubsub 32mb 8mb 60
1674
2054
  #
1675
2055
  # client-query-buffer-limit 1gb
1676
2056
 
2057
+ # In some scenarios client connections can hog up memory leading to OOM
2058
+ # errors or data eviction. To avoid this we can cap the accumulated memory
2059
+ # used by all client connections (all pubsub and normal clients). Once we
2060
+ # reach that limit connections will be dropped by the server freeing up
2061
+ # memory. The server will attempt to drop the connections using the most
2062
+ # memory first. We call this mechanism "client eviction".
2063
+ #
2064
+ # Client eviction is configured using the maxmemory-clients setting as follows:
2065
+ # 0 - client eviction is disabled (default)
2066
+ #
2067
+ # A memory value can be used for the client eviction threshold,
2068
+ # for example:
2069
+ # maxmemory-clients 1g
2070
+ #
2071
+ # A percentage value (between 1% and 100%) means the client eviction threshold
2072
+ # is based on a percentage of the maxmemory setting. For example to set client
2073
+ # eviction at 5% of maxmemory:
2074
+ # maxmemory-clients 5%
2075
+
1677
2076
  # In the Redis protocol, bulk requests, that are, elements representing single
1678
2077
  # strings, are normally limited to 512 mb. However you can change this limit
1679
2078
  # here, but must be 1mb or greater
@@ -1714,13 +2113,13 @@ hz 10
1714
2113
  dynamic-hz yes
1715
2114
 
1716
2115
  # When a child rewrites the AOF file, if the following option is enabled
1717
- # the file will be fsync-ed every 32 MB of data generated. This is useful
2116
+ # the file will be fsync-ed every 4 MB of data generated. This is useful
1718
2117
  # in order to commit the file to the disk more incrementally and avoid
1719
2118
  # big latency spikes.
1720
2119
  aof-rewrite-incremental-fsync yes
1721
2120
 
1722
2121
  # When redis saves RDB file, if the following option is enabled
1723
- # the file will be fsync-ed every 32 MB of data generated. This is useful
2122
+ # the file will be fsync-ed every 4 MB of data generated. This is useful
1724
2123
  # in order to commit the file to the disk more incrementally and avoid
1725
2124
  # big latency spikes.
1726
2125
  rdb-save-incremental-fsync yes
@@ -1817,7 +2216,7 @@ rdb-save-incremental-fsync yes
1817
2216
  # defragmentation process. If you are not sure about what they mean it is
1818
2217
  # a good idea to leave the defaults untouched.
1819
2218
 
1820
- # Enabled active defragmentation
2219
+ # Active defragmentation is disabled by default
1821
2220
  # activedefrag no
1822
2221
 
1823
2222
  # Minimum amount of fragmentation waste to start active defrag