|
|
@ -65,7 +65,7 @@ |
|
|
|
# internet, binding to all the interfaces is dangerous and will expose the |
|
|
|
# instance to everybody on the internet. So by default we uncomment the |
|
|
|
# following bind directive, that will force Redis to listen only into |
|
|
|
# the IPv4 lookback interface address (this means Redis will be able to |
|
|
|
# the IPv4 loopback interface address (this means Redis will be able to |
|
|
|
# accept connections only from clients running into the same computer it |
|
|
|
# is running). |
|
|
|
# |
|
|
@ -270,57 +270,64 @@ dir /var/lib/redis |
|
|
|
|
|
|
|
################################# REPLICATION ################################# |
|
|
|
|
|
|
|
# Master-Slave replication. Use slaveof to make a Redis instance a copy of |
|
|
|
# Master-Replica replication. Use replicaof to make a Redis instance a copy of |
|
|
|
# another Redis server. A few things to understand ASAP about Redis replication. |
|
|
|
# |
|
|
|
# +------------------+ +---------------+ |
|
|
|
# | Master | ---> | Replica | |
|
|
|
# | (receive writes) | | (exact copy) | |
|
|
|
# +------------------+ +---------------+ |
|
|
|
# |
|
|
|
# 1) Redis replication is asynchronous, but you can configure a master to |
|
|
|
# stop accepting writes if it appears to be not connected with at least |
|
|
|
# a given number of slaves. |
|
|
|
# 2) Redis slaves are able to perform a partial resynchronization with the |
|
|
|
# a given number of replicas. |
|
|
|
# 2) Redis replicas are able to perform a partial resynchronization with the |
|
|
|
# master if the replication link is lost for a relatively small amount of |
|
|
|
# time. You may want to configure the replication backlog size (see the next |
|
|
|
# sections of this file) with a sensible value depending on your needs. |
|
|
|
# 3) Replication is automatic and does not need user intervention. After a |
|
|
|
# network partition slaves automatically try to reconnect to masters |
|
|
|
# network partition replicas automatically try to reconnect to masters |
|
|
|
# and resynchronize with them. |
|
|
|
# |
|
|
|
# slaveof <masterip> <masterport> |
|
|
|
# replicaof <masterip> <masterport> |
|
|
|
|
|
|
|
# If the master is password protected (using the "requirepass" configuration |
|
|
|
# directive below) it is possible to tell the slave to authenticate before |
|
|
|
# directive below) it is possible to tell the replica to authenticate before |
|
|
|
# starting the replication synchronization process, otherwise the master will |
|
|
|
# refuse the slave request. |
|
|
|
# refuse the replica request. |
|
|
|
# |
|
|
|
# masterauth <master-password> |
|
|
|
|
|
|
|
# When a slave loses its connection with the master, or when the replication |
|
|
|
# is still in progress, the slave can act in two different ways: |
|
|
|
# When a replica loses its connection with the master, or when the replication |
|
|
|
# is still in progress, the replica can act in two different ways: |
|
|
|
# |
|
|
|
# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will |
|
|
|
# 1) if replica-serve-stale-data is set to 'yes' (the default) the replica will |
|
|
|
# still reply to client requests, possibly with out of date data, or the |
|
|
|
# data set may just be empty if this is the first synchronization. |
|
|
|
# |
|
|
|
# 2) if slave-serve-stale-data is set to 'no' the slave will reply with |
|
|
|
# 2) if replica-serve-stale-data is set to 'no' the replica will reply with |
|
|
|
# an error "SYNC with master in progress" to all the kind of commands |
|
|
|
# but to INFO and SLAVEOF. |
|
|
|
# but to INFO, replicaOF, AUTH, PING, SHUTDOWN, REPLCONF, ROLE, CONFIG, |
|
|
|
# SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, PUBLISH, PUBSUB, |
|
|
|
# COMMAND, POST, HOST: and LATENCY. |
|
|
|
# |
|
|
|
slave-serve-stale-data yes |
|
|
|
replica-serve-stale-data yes |
|
|
|
|
|
|
|
# You can configure a slave instance to accept writes or not. Writing against |
|
|
|
# a slave instance may be useful to store some ephemeral data (because data |
|
|
|
# written on a slave will be easily deleted after resync with the master) but |
|
|
|
# You can configure a replica instance to accept writes or not. Writing against |
|
|
|
# a replica instance may be useful to store some ephemeral data (because data |
|
|
|
# written on a replica will be easily deleted after resync with the master) but |
|
|
|
# may also cause problems if clients are writing to it because of a |
|
|
|
# misconfiguration. |
|
|
|
# |
|
|
|
# Since Redis 2.6 by default slaves are read-only. |
|
|
|
# Since Redis 2.6 by default replicas are read-only. |
|
|
|
# |
|
|
|
# Note: read only slaves are not designed to be exposed to untrusted clients |
|
|
|
# Note: read only replicas are not designed to be exposed to untrusted clients |
|
|
|
# on the internet. It's just a protection layer against misuse of the instance. |
|
|
|
# Still a read only slave exports by default all the administrative commands |
|
|
|
# Still a read only replica exports by default all the administrative commands |
|
|
|
# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve |
|
|
|
# security of read only slaves using 'rename-command' to shadow all the |
|
|
|
# security of read only replicas using 'rename-command' to shadow all the |
|
|
|
# administrative / dangerous commands. |
|
|
|
slave-read-only yes |
|
|
|
replica-read-only yes |
|
|
|
|
|
|
|
# Replication SYNC strategy: disk or socket. |
|
|
|
# |
|
|
@ -328,25 +335,25 @@ slave-read-only yes |
|
|
|
# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY |
|
|
|
# ------------------------------------------------------- |
|
|
|
# |
|
|
|
# New slaves and reconnecting slaves that are not able to continue the replication |
|
|
|
# New replicas and reconnecting replicas that are not able to continue the replication |
|
|
|
# process just receiving differences, need to do what is called a "full |
|
|
|
# synchronization". An RDB file is transmitted from the master to the slaves. |
|
|
|
# synchronization". An RDB file is transmitted from the master to the replicas. |
|
|
|
# The transmission can happen in two different ways: |
|
|
|
# |
|
|
|
# 1) Disk-backed: The Redis master creates a new process that writes the RDB |
|
|
|
# file on disk. Later the file is transferred by the parent |
|
|
|
# process to the slaves incrementally. |
|
|
|
# process to the replicas incrementally. |
|
|
|
# 2) Diskless: The Redis master creates a new process that directly writes the |
|
|
|
# RDB file to slave sockets, without touching the disk at all. |
|
|
|
# RDB file to replica sockets, without touching the disk at all. |
|
|
|
# |
|
|
|
# With disk-backed replication, while the RDB file is generated, more slaves |
|
|
|
# With disk-backed replication, while the RDB file is generated, more replicas |
|
|
|
# can be queued and served with the RDB file as soon as the current child producing |
|
|
|
# the RDB file finishes its work. With diskless replication instead once |
|
|
|
# the transfer starts, new slaves arriving will be queued and a new transfer |
|
|
|
# the transfer starts, new replicas arriving will be queued and a new transfer |
|
|
|
# will start when the current one terminates. |
|
|
|
# |
|
|
|
# When diskless replication is used, the master waits a configurable amount of |
|
|
|
# time (in seconds) before starting the transfer in the hope that multiple slaves |
|
|
|
# time (in seconds) before starting the transfer in the hope that multiple replicas |
|
|
|
# will arrive and the transfer can be parallelized. |
|
|
|
# |
|
|
|
# With slow disks and fast (large bandwidth) networks, diskless replication |
|
|
@ -355,140 +362,140 @@ repl-diskless-sync no |
|
|
|
|
|
|
|
# When diskless replication is enabled, it is possible to configure the delay |
|
|
|
# the server waits in order to spawn the child that transfers the RDB via socket |
|
|
|
# to the slaves. |
|
|
|
# to the replicas. |
|
|
|
# |
|
|
|
# This is important since once the transfer starts, it is not possible to serve |
|
|
|
# new slaves arriving, that will be queued for the next RDB transfer, so the server |
|
|
|
# waits a delay in order to let more slaves arrive. |
|
|
|
# new replicas arriving, that will be queued for the next RDB transfer, so the server |
|
|
|
# waits a delay in order to let more replicas arrive. |
|
|
|
# |
|
|
|
# The delay is specified in seconds, and by default is 5 seconds. To disable |
|
|
|
# it entirely just set it to 0 seconds and the transfer will start ASAP. |
|
|
|
repl-diskless-sync-delay 5 |
|
|
|
|
|
|
|
# Slaves send PINGs to server in a predefined interval. It's possible to change |
|
|
|
# this interval with the repl_ping_slave_period option. The default value is 10 |
|
|
|
# Replicas send PINGs to server in a predefined interval. It's possible to change |
|
|
|
# this interval with the repl_ping_replica_period option. The default value is 10 |
|
|
|
# seconds. |
|
|
|
# |
|
|
|
# repl-ping-slave-period 10 |
|
|
|
# repl-ping-replica-period 10 |
|
|
|
|
|
|
|
# The following option sets the replication timeout for: |
|
|
|
# |
|
|
|
# 1) Bulk transfer I/O during SYNC, from the point of view of slave. |
|
|
|
# 2) Master timeout from the point of view of slaves (data, pings). |
|
|
|
# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings). |
|
|
|
# 1) Bulk transfer I/O during SYNC, from the point of view of replica. |
|
|
|
# 2) Master timeout from the point of view of replicas (data, pings). |
|
|
|
# 3) Replica timeout from the point of view of masters (REPLCONF ACK pings). |
|
|
|
# |
|
|
|
# It is important to make sure that this value is greater than the value |
|
|
|
# specified for repl-ping-slave-period otherwise a timeout will be detected |
|
|
|
# every time there is low traffic between the master and the slave. |
|
|
|
# specified for repl-ping-replica-period otherwise a timeout will be detected |
|
|
|
# every time there is low traffic between the master and the replica. |
|
|
|
# |
|
|
|
# repl-timeout 60 |
|
|
|
|
|
|
|
# Disable TCP_NODELAY on the slave socket after SYNC? |
|
|
|
# Disable TCP_NODELAY on the replica socket after SYNC? |
|
|
|
# |
|
|
|
# If you select "yes" Redis will use a smaller number of TCP packets and |
|
|
|
# less bandwidth to send data to slaves. But this can add a delay for |
|
|
|
# the data to appear on the slave side, up to 40 milliseconds with |
|
|
|
# less bandwidth to send data to replicas. But this can add a delay for |
|
|
|
# the data to appear on the replica side, up to 40 milliseconds with |
|
|
|
# Linux kernels using a default configuration. |
|
|
|
# |
|
|
|
# If you select "no" the delay for data to appear on the slave side will |
|
|
|
# If you select "no" the delay for data to appear on the replica side will |
|
|
|
# be reduced but more bandwidth will be used for replication. |
|
|
|
# |
|
|
|
# By default we optimize for low latency, but in very high traffic conditions |
|
|
|
# or when the master and slaves are many hops away, turning this to "yes" may |
|
|
|
# or when the master and replicas are many hops away, turning this to "yes" may |
|
|
|
# be a good idea. |
|
|
|
repl-disable-tcp-nodelay no |
|
|
|
|
|
|
|
# Set the replication backlog size. The backlog is a buffer that accumulates |
|
|
|
# slave data when slaves are disconnected for some time, so that when a slave |
|
|
|
# replica data when replicas are disconnected for some time, so that when a replica |
|
|
|
# wants to reconnect again, often a full resync is not needed, but a partial |
|
|
|
# resync is enough, just passing the portion of data the slave missed while |
|
|
|
# resync is enough, just passing the portion of data the replica missed while |
|
|
|
# disconnected. |
|
|
|
# |
|
|
|
# The bigger the replication backlog, the longer the time the slave can be |
|
|
|
# The bigger the replication backlog, the longer the time the replica can be |
|
|
|
# disconnected and later be able to perform a partial resynchronization. |
|
|
|
# |
|
|
|
# The backlog is only allocated once there is at least a slave connected. |
|
|
|
# The backlog is only allocated once there is at least a replica connected. |
|
|
|
# |
|
|
|
# repl-backlog-size 1mb |
|
|
|
|
|
|
|
# After a master has no longer connected slaves for some time, the backlog |
|
|
|
# After a master has no longer connected replicas for some time, the backlog |
|
|
|
# will be freed. The following option configures the amount of seconds that |
|
|
|
# need to elapse, starting from the time the last slave disconnected, for |
|
|
|
# need to elapse, starting from the time the last replica disconnected, for |
|
|
|
# the backlog buffer to be freed. |
|
|
|
# |
|
|
|
# Note that slaves never free the backlog for timeout, since they may be |
|
|
|
# Note that replicas never free the backlog for timeout, since they may be |
|
|
|
# promoted to masters later, and should be able to correctly "partially |
|
|
|
# resynchronize" with the slaves: hence they should always accumulate backlog. |
|
|
|
# resynchronize" with the replicas: hence they should always accumulate backlog. |
|
|
|
# |
|
|
|
# A value of 0 means to never release the backlog. |
|
|
|
# |
|
|
|
# repl-backlog-ttl 3600 |
|
|
|
|
|
|
|
# The slave priority is an integer number published by Redis in the INFO output. |
|
|
|
# It is used by Redis Sentinel in order to select a slave to promote into a |
|
|
|
# The replica priority is an integer number published by Redis in the INFO output. |
|
|
|
# It is used by Redis Sentinel in order to select a replica to promote into a |
|
|
|
# master if the master is no longer working correctly. |
|
|
|
# |
|
|
|
# A slave with a low priority number is considered better for promotion, so |
|
|
|
# for instance if there are three slaves with priority 10, 100, 25 Sentinel will |
|
|
|
# A replica with a low priority number is considered better for promotion, so |
|
|
|
# for instance if there are three replicas with priority 10, 100, 25 Sentinel will |
|
|
|
# pick the one with priority 10, that is the lowest. |
|
|
|
# |
|
|
|
# However a special priority of 0 marks the slave as not able to perform the |
|
|
|
# role of master, so a slave with priority of 0 will never be selected by |
|
|
|
# However a special priority of 0 marks the replica as not able to perform the |
|
|
|
# role of master, so a replica with priority of 0 will never be selected by |
|
|
|
# Redis Sentinel for promotion. |
|
|
|
# |
|
|
|
# By default the priority is 100. |
|
|
|
slave-priority 100 |
|
|
|
replica-priority 100 |
|
|
|
|
|
|
|
# It is possible for a master to stop accepting writes if there are less than |
|
|
|
# N slaves connected, having a lag less or equal than M seconds. |
|
|
|
# N replicas connected, having a lag less or equal than M seconds. |
|
|
|
# |
|
|
|
# The N slaves need to be in "online" state. |
|
|
|
# The N replicas need to be in "online" state. |
|
|
|
# |
|
|
|
# The lag in seconds, that must be <= the specified value, is calculated from |
|
|
|
# the last ping received from the slave, that is usually sent every second. |
|
|
|
# the last ping received from the replica, that is usually sent every second. |
|
|
|
# |
|
|
|
# This option does not GUARANTEE that N replicas will accept the write, but |
|
|
|
# will limit the window of exposure for lost writes in case not enough slaves |
|
|
|
# will limit the window of exposure for lost writes in case not enough replicas |
|
|
|
# are available, to the specified number of seconds. |
|
|
|
# |
|
|
|
# For example to require at least 3 slaves with a lag <= 10 seconds use: |
|
|
|
# For example to require at least 3 replicas with a lag <= 10 seconds use: |
|
|
|
# |
|
|
|
# min-slaves-to-write 3 |
|
|
|
# min-slaves-max-lag 10 |
|
|
|
# min-replicas-to-write 3 |
|
|
|
# min-replicas-max-lag 10 |
|
|
|
# |
|
|
|
# Setting one or the other to 0 disables the feature. |
|
|
|
# |
|
|
|
# By default min-slaves-to-write is set to 0 (feature disabled) and |
|
|
|
# min-slaves-max-lag is set to 10. |
|
|
|
# By default min-replicas-to-write is set to 0 (feature disabled) and |
|
|
|
# min-replicas-max-lag is set to 10. |
|
|
|
|
|
|
|
# A Redis master is able to list the address and port of the attached |
|
|
|
# slaves in different ways. For example the "INFO replication" section |
|
|
|
# replicas in different ways. For example the "INFO replication" section |
|
|
|
# offers this information, which is used, among other tools, by |
|
|
|
# Redis Sentinel in order to discover slave instances. |
|
|
|
# Redis Sentinel in order to discover replica instances. |
|
|
|
# Another place where this info is available is in the output of the |
|
|
|
# "ROLE" command of a master. |
|
|
|
# |
|
|
|
# The listed IP and address normally reported by a slave is obtained |
|
|
|
# The listed IP and address normally reported by a replica is obtained |
|
|
|
# in the following way: |
|
|
|
# |
|
|
|
# IP: The address is auto detected by checking the peer address |
|
|
|
# of the socket used by the slave to connect with the master. |
|
|
|
# of the socket used by the replica to connect with the master. |
|
|
|
# |
|
|
|
# Port: The port is communicated by the slave during the replication |
|
|
|
# handshake, and is normally the port that the slave is using to |
|
|
|
# list for connections. |
|
|
|
# Port: The port is communicated by the replica during the replication |
|
|
|
# handshake, and is normally the port that the replica is using to |
|
|
|
# listen for connections. |
|
|
|
# |
|
|
|
# However when port forwarding or Network Address Translation (NAT) is |
|
|
|
# used, the slave may be actually reachable via different IP and port |
|
|
|
# pairs. The following two options can be used by a slave in order to |
|
|
|
# used, the replica may be actually reachable via different IP and port |
|
|
|
# pairs. The following two options can be used by a replica in order to |
|
|
|
# report to its master a specific set of IP and port, so that both INFO |
|
|
|
# and ROLE will report those values. |
|
|
|
# |
|
|
|
# There is no need to use both the options if you need to override just |
|
|
|
# the port or the IP address. |
|
|
|
# |
|
|
|
# slave-announce-ip 5.5.5.5 |
|
|
|
# slave-announce-port 1234 |
|
|
|
# replica-announce-ip 5.5.5.5 |
|
|
|
# replica-announce-port 1234 |
|
|
|
|
|
|
|
################################## SECURITY ################################### |
|
|
|
|
|
|
@ -522,7 +529,7 @@ slave-priority 100 |
|
|
|
# rename-command CONFIG "" |
|
|
|
# |
|
|
|
# Please note that changing the name of commands that are logged into the |
|
|
|
# AOF file or transmitted to slaves may cause problems. |
|
|
|
# AOF file or transmitted to replicas may cause problems. |
|
|
|
|
|
|
|
################################### CLIENTS #################################### |
|
|
|
|
|
|
@ -551,15 +558,15 @@ slave-priority 100 |
|
|
|
# This option is usually useful when using Redis as an LRU or LFU cache, or to |
|
|
|
# set a hard memory limit for an instance (using the 'noeviction' policy). |
|
|
|
# |
|
|
|
# WARNING: If you have slaves attached to an instance with maxmemory on, |
|
|
|
# the size of the output buffers needed to feed the slaves are subtracted |
|
|
|
# WARNING: If you have replicas attached to an instance with maxmemory on, |
|
|
|
# the size of the output buffers needed to feed the replicas are subtracted |
|
|
|
# from the used memory count, so that network problems / resyncs will |
|
|
|
# not trigger a loop where keys are evicted, and in turn the output |
|
|
|
# buffer of slaves is full with DELs of keys evicted triggering the deletion |
|
|
|
# buffer of replicas is full with DELs of keys evicted triggering the deletion |
|
|
|
# of more keys, and so forth until the database is completely emptied. |
|
|
|
# |
|
|
|
# In short... if you have slaves attached it is suggested that you set a lower |
|
|
|
# limit for maxmemory so that there is some free RAM on the system for slave |
|
|
|
# In short... if you have replicas attached it is suggested that you set a lower |
|
|
|
# limit for maxmemory so that there is some free RAM on the system for replica |
|
|
|
# output buffers (but this is not needed if the policy is 'noeviction'). |
|
|
|
# |
|
|
|
maxmemory 4GB |
|
|
@ -606,13 +613,33 @@ maxmemory-policy allkeys-lfu |
|
|
|
# |
|
|
|
maxmemory-samples 5 |
|
|
|
|
|
|
|
# Starting from Redis 5, by default a replica will ignore its maxmemory setting |
|
|
|
# (unless it is promoted to master after a failover or manually). It means |
|
|
|
# that the eviction of keys will be just handled by the master, sending the |
|
|
|
# DEL commands to the replica as keys evict in the master side. |
|
|
|
# |
|
|
|
# This behavior ensures that masters and replicas stay consistent, and is usually |
|
|
|
# what you want, however if your replica is writable, or you want the replica to have |
|
|
|
# a different memory setting, and you are sure all the writes performed to the |
|
|
|
# replica are idempotent, then you may change this default (but be sure to understand |
|
|
|
# what you are doing). |
|
|
|
# |
|
|
|
# Note that since the replica by default does not evict, it may end using more |
|
|
|
# memory than the one set via maxmemory (there are certain buffers that may |
|
|
|
# be larger on the replica, or data structures may sometimes take more memory and so |
|
|
|
# forth). So make sure you monitor your replicas and make sure they have enough |
|
|
|
# memory to never hit a real out-of-memory condition before the master hits |
|
|
|
# the configured maxmemory setting. |
|
|
|
# |
|
|
|
# replica-ignore-maxmemory yes |
|
|
|
|
|
|
|
############################# LAZY FREEING #################################### |
|
|
|
|
|
|
|
# Redis has two primitives to delete keys. One is called DEL and is a blocking |
|
|
|
# deletion of the object. It means that the server stops processing new commands |
|
|
|
# in order to reclaim all the memory associated with an object in a synchronous |
|
|
|
# way. If the key deleted is associated with a small object, the time needed |
|
|
|
# in order to execute th DEL command is very small and comparable to most other |
|
|
|
# in order to execute the DEL command is very small and comparable to most other |
|
|
|
# O(1) or O(log_N) commands in Redis. However if the key is associated with an |
|
|
|
# aggregated value containing millions of elements, the server can block for |
|
|
|
# a long time (even seconds) in order to complete the operation. |
|
|
@ -627,7 +654,7 @@ maxmemory-samples 5 |
|
|
|
# It's up to the design of the application to understand when it is a good |
|
|
|
# idea to use one or the other. However the Redis server sometimes has to |
|
|
|
# delete keys or flush the whole database as a side effect of other operations. |
|
|
|
# Specifically Redis deletes objects independently of an user call in the |
|
|
|
# Specifically Redis deletes objects independently of a user call in the |
|
|
|
# following scenarios: |
|
|
|
# |
|
|
|
# 1) On eviction, because of the maxmemory and maxmemory policy configurations, |
|
|
@ -641,9 +668,9 @@ maxmemory-samples 5 |
|
|
|
# or SORT with STORE option may delete existing keys. The SET command |
|
|
|
# itself removes any old content of the specified key in order to replace |
|
|
|
# it with the specified string. |
|
|
|
# 4) During replication, when a slave performs a full resynchronization with |
|
|
|
# 4) During replication, when a replica performs a full resynchronization with |
|
|
|
# its master, the content of the whole database is removed in order to |
|
|
|
# load the RDB file just transfered. |
|
|
|
# load the RDB file just transferred. |
|
|
|
# |
|
|
|
# In all the above cases the default is to delete objects in a blocking way, |
|
|
|
# like if DEL was called. However you can configure each case specifically |
|
|
@ -653,7 +680,7 @@ maxmemory-samples 5 |
|
|
|
lazyfree-lazy-eviction no |
|
|
|
lazyfree-lazy-expire no |
|
|
|
lazyfree-lazy-server-del no |
|
|
|
slave-lazy-flush no |
|
|
|
replica-lazy-flush no |
|
|
|
|
|
|
|
############################## APPEND ONLY MODE ############################### |
|
|
|
|
|
|
@ -782,10 +809,7 @@ aof-load-truncated yes |
|
|
|
# When loading Redis recognizes that the AOF file starts with the "REDIS" |
|
|
|
# string and loads the prefixed RDB file, and continues loading the AOF |
|
|
|
# tail. |
|
|
|
# |
|
|
|
# This is currently turned off by default in order to avoid the surprise |
|
|
|
# of a format change, but will at some point be used as the default. |
|
|
|
aof-use-rdb-preamble no |
|
|
|
aof-use-rdb-preamble yes |
|
|
|
|
|
|
|
################################ LUA SCRIPTING ############################### |
|
|
|
|
|
|
@ -806,13 +830,7 @@ aof-use-rdb-preamble no |
|
|
|
lua-time-limit 5000 |
|
|
|
|
|
|
|
################################ REDIS CLUSTER ############################### |
|
|
|
# |
|
|
|
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
|
|
# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however |
|
|
|
# in order to mark it as "mature" we need to wait for a non trivial percentage |
|
|
|
# of users to deploy it in production. |
|
|
|
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
|
|
# |
|
|
|
|
|
|
|
# Normal Redis instances can't be part of a Redis Cluster; only nodes that are |
|
|
|
# started as cluster nodes can. In order to start a Redis instance as a |
|
|
|
# cluster node enable the cluster support uncommenting the following: |
|
|
@ -833,42 +851,42 @@ lua-time-limit 5000 |
|
|
|
# |
|
|
|
# cluster-node-timeout 15000 |
|
|
|
|
|
|
|
# A slave of a failing master will avoid to start a failover if its data |
|
|
|
# A replica of a failing master will avoid to start a failover if its data |
|
|
|
# looks too old. |
|
|
|
# |
|
|
|
# There is no simple way for a slave to actually have an exact measure of |
|
|
|
# There is no simple way for a replica to actually have an exact measure of |
|
|
|
# its "data age", so the following two checks are performed: |
|
|
|
# |
|
|
|
# 1) If there are multiple slaves able to failover, they exchange messages |
|
|
|
# in order to try to give an advantage to the slave with the best |
|
|
|
# 1) If there are multiple replicas able to failover, they exchange messages |
|
|
|
# in order to try to give an advantage to the replica with the best |
|
|
|
# replication offset (more data from the master processed). |
|
|
|
# Slaves will try to get their rank by offset, and apply to the start |
|
|
|
# Replicas will try to get their rank by offset, and apply to the start |
|
|
|
# of the failover a delay proportional to their rank. |
|
|
|
# |
|
|
|
# 2) Every single slave computes the time of the last interaction with |
|
|
|
# 2) Every single replica computes the time of the last interaction with |
|
|
|
# its master. This can be the last ping or command received (if the master |
|
|
|
# is still in the "connected" state), or the time that elapsed since the |
|
|
|
# disconnection with the master (if the replication link is currently down). |
|
|
|
# If the last interaction is too old, the slave will not try to failover |
|
|
|
# If the last interaction is too old, the replica will not try to failover |
|
|
|
# at all. |
|
|
|
# |
|
|
|
# The point "2" can be tuned by user. Specifically a slave will not perform |
|
|
|
# The point "2" can be tuned by user. Specifically a replica will not perform |
|
|
|
# the failover if, since the last interaction with the master, the time |
|
|
|
# elapsed is greater than: |
|
|
|
# |
|
|
|
# (node-timeout * slave-validity-factor) + repl-ping-slave-period |
|
|
|
# (node-timeout * replica-validity-factor) + repl-ping-replica-period |
|
|
|
# |
|
|
|
# So for example if node-timeout is 30 seconds, and the slave-validity-factor |
|
|
|
# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the |
|
|
|
# slave will not try to failover if it was not able to talk with the master |
|
|
|
# So for example if node-timeout is 30 seconds, and the replica-validity-factor |
|
|
|
# is 10, and assuming a default repl-ping-replica-period of 10 seconds, the |
|
|
|
# replica will not try to failover if it was not able to talk with the master |
|
|
|
# for longer than 310 seconds. |
|
|
|
# |
|
|
|
# A large slave-validity-factor may allow slaves with too old data to failover |
|
|
|
# A large replica-validity-factor may allow replicas with too old data to failover |
|
|
|
# a master, while a too small value may prevent the cluster from being able to |
|
|
|
# elect a slave at all. |
|
|
|
# elect a replica at all. |
|
|
|
# |
|
|
|
# For maximum availability, it is possible to set the slave-validity-factor |
|
|
|
# to a value of 0, which means, that slaves will always try to failover the |
|
|
|
# For maximum availability, it is possible to set the replica-validity-factor |
|
|
|
# to a value of 0, which means, that replicas will always try to failover the |
|
|
|
# master regardless of the last time they interacted with the master. |
|
|
|
# (However they'll always try to apply a delay proportional to their |
|
|
|
# offset rank). |
|
|
@ -876,22 +894,22 @@ lua-time-limit 5000 |
|
|
|
# Zero is the only value able to guarantee that when all the partitions heal |
|
|
|
# the cluster will always be able to continue. |
|
|
|
# |
|
|
|
# cluster-slave-validity-factor 10 |
|
|
|
# cluster-replica-validity-factor 10 |
|
|
|
|
|
|
|
# Cluster slaves are able to migrate to orphaned masters, that are masters |
|
|
|
# that are left without working slaves. This improves the cluster ability |
|
|
|
# Cluster replicas are able to migrate to orphaned masters, that are masters |
|
|
|
# that are left without working replicas. This improves the cluster ability |
|
|
|
# to resist to failures as otherwise an orphaned master can't be failed over |
|
|
|
# in case of failure if it has no working slaves. |
|
|
|
# in case of failure if it has no working replicas. |
|
|
|
# |
|
|
|
# Slaves migrate to orphaned masters only if there are still at least a |
|
|
|
# given number of other working slaves for their old master. This number |
|
|
|
# is the "migration barrier". A migration barrier of 1 means that a slave |
|
|
|
# will migrate only if there is at least 1 other working slave for its master |
|
|
|
# and so forth. It usually reflects the number of slaves you want for every |
|
|
|
# Replicas migrate to orphaned masters only if there are still at least a |
|
|
|
# given number of other working replicas for their old master. This number |
|
|
|
# is the "migration barrier". A migration barrier of 1 means that a replica |
|
|
|
# will migrate only if there is at least 1 other working replica for its master |
|
|
|
# and so forth. It usually reflects the number of replicas you want for every |
|
|
|
# master in your cluster. |
|
|
|
# |
|
|
|
# Default is 1 (slaves migrate only if their masters remain with at least |
|
|
|
# one slave). To disable migration just set it to a very large value. |
|
|
|
# Default is 1 (replicas migrate only if their masters remain with at least |
|
|
|
# one replica). To disable migration just set it to a very large value. |
|
|
|
# A value of 0 can be set but is useful only for debugging and dangerous |
|
|
|
# in production. |
|
|
|
# |
|
|
@ -910,6 +928,16 @@ lua-time-limit 5000 |
|
|
|
# |
|
|
|
# cluster-require-full-coverage yes |
|
|
|
|
|
|
|
# This option, when set to yes, prevents replicas from trying to failover its |
|
|
|
# master during master failures. However the master can still perform a |
|
|
|
# manual failover, if forced to do so. |
|
|
|
# |
|
|
|
# This is useful in different scenarios, especially in the case of multiple |
|
|
|
# data center operations, where we want one side to never be promoted if not |
|
|
|
# in the case of a total DC failure. |
|
|
|
# |
|
|
|
# cluster-replica-no-failover no |
|
|
|
|
|
|
|
# In order to setup your cluster make sure to read the documentation |
|
|
|
# available at http://redis.io web site. |
|
|
|
|
|
|
@ -920,7 +948,7 @@ lua-time-limit 5000 |
|
|
|
# Docker and other containers). |
|
|
|
# |
|
|
|
# In order to make Redis Cluster working in such environments, a static |
|
|
|
# configuration where each node known its public address is needed. The |
|
|
|
# configuration where each node knows its public address is needed. The |
|
|
|
# following two options are used for this scope, and are: |
|
|
|
# |
|
|
|
# * cluster-announce-ip |
|
|
@ -1103,6 +1131,17 @@ zset-max-ziplist-value 64 |
|
|
|
# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. |
|
|
|
hll-sparse-max-bytes 3000 |
|
|
|
|
|
|
|
# Streams macro node max size / items. The stream data structure is a radix |
|
|
|
# tree of big nodes that encode multiple items inside. Using this configuration |
|
|
|
# it is possible to configure how big a single node can be in bytes, and the |
|
|
|
# maximum number of items it may contain before switching to a new node when |
|
|
|
# appending new stream entries. If any of the following settings are set to |
|
|
|
# zero, the limit is ignored, so for instance it is possible to set just a |
|
|
|
# max entires limit by setting max-bytes to 0 and max-entries to the desired |
|
|
|
# value. |
|
|
|
stream-node-max-bytes 4096 |
|
|
|
stream-node-max-entries 100 |
|
|
|
|
|
|
|
# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in |
|
|
|
# order to help rehashing the main Redis hash table (the one mapping top-level |
|
|
|
# keys to values). The hash table implementation Redis uses (see dict.c) |
|
|
@ -1131,7 +1170,7 @@ activerehashing yes |
|
|
|
# The limit can be set differently for the three different classes of clients: |
|
|
|
# |
|
|
|
# normal -> normal clients including MONITOR clients |
|
|
|
# slave -> slave clients |
|
|
|
# replica -> replica clients |
|
|
|
# pubsub -> clients subscribed to at least one pubsub channel or pattern |
|
|
|
# |
|
|
|
# The syntax of every client-output-buffer-limit directive is the following: |
|
|
@ -1152,14 +1191,28 @@ activerehashing yes |
|
|
|
# asynchronous clients may create a scenario where data is requested faster |
|
|
|
# than it can read. |
|
|
|
# |
|
|
|
# Instead there is a default limit for pubsub and slave clients, since |
|
|
|
# subscribers and slaves receive data in a push fashion. |
|
|
|
# Instead there is a default limit for pubsub and replica clients, since |
|
|
|
# subscribers and replicas receive data in a push fashion. |
|
|
|
# |
|
|
|
# Both the hard or the soft limit can be disabled by setting them to zero. |
|
|
|
client-output-buffer-limit normal 0 0 0 |
|
|
|
client-output-buffer-limit slave 256mb 64mb 60 |
|
|
|
client-output-buffer-limit replica 256mb 64mb 60 |
|
|
|
client-output-buffer-limit pubsub 32mb 8mb 60 |
|
|
|
|
|
|
|
# Client query buffers accumulate new commands. They are limited to a fixed |
|
|
|
# amount by default in order to avoid that a protocol desynchronization (for |
|
|
|
# instance due to a bug in the client) will lead to unbound memory usage in |
|
|
|
# the query buffer. However you can configure it here if you have very special |
|
|
|
# needs, such us huge multi/exec requests or alike. |
|
|
|
# |
|
|
|
# client-query-buffer-limit 1gb |
|
|
|
|
|
|
|
# In the Redis protocol, bulk requests, that are, elements representing single |
|
|
|
# strings, are normally limited ot 512 mb. However you can change this limit |
|
|
|
# here. |
|
|
|
# |
|
|
|
# proto-max-bulk-len 512mb |
|
|
|
|
|
|
|
# Redis calls an internal function to perform many background tasks, like |
|
|
|
# closing connections of clients in timeout, purging expired keys that are |
|
|
|
# never requested, and so forth. |
|
|
@ -1177,12 +1230,34 @@ client-output-buffer-limit pubsub 32mb 8mb 60 |
|
|
|
# 100 only in environments where very low latency is required. |
|
|
|
hz 10 |
|
|
|
|
|
|
|
# Normally it is useful to have an HZ value which is proportional to the |
|
|
|
# number of clients connected. This is useful in order, for instance, to |
|
|
|
# avoid too many clients are processed for each background task invocation |
|
|
|
# in order to avoid latency spikes. |
|
|
|
# |
|
|
|
# Since the default HZ value by default is conservatively set to 10, Redis |
|
|
|
# offers, and enables by default, the ability to use an adaptive HZ value |
|
|
|
# which will temporary raise when there are many connected clients. |
|
|
|
# |
|
|
|
# When dynamic HZ is enabled, the actual configured HZ will be used as |
|
|
|
# as a baseline, but multiples of the configured HZ value will be actually |
|
|
|
# used as needed once more clients are connected. In this way an idle |
|
|
|
# instance will use very little CPU time while a busy instance will be |
|
|
|
# more responsive. |
|
|
|
dynamic-hz yes |
|
|
|
|
|
|
|
# When a child rewrites the AOF file, if the following option is enabled |
|
|
|
# the file will be fsync-ed every 32 MB of data generated. This is useful |
|
|
|
# in order to commit the file to the disk more incrementally and avoid |
|
|
|
# big latency spikes. |
|
|
|
aof-rewrite-incremental-fsync yes |
|
|
|
|
|
|
|
# When redis saves RDB file, if the following option is enabled |
|
|
|
# the file will be fsync-ed every 32 MB of data generated. This is useful |
|
|
|
# in order to commit the file to the disk more incrementally and avoid |
|
|
|
# big latency spikes. |
|
|
|
rdb-save-incremental-fsync yes |
|
|
|
|
|
|
|
# Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good |
|
|
|
# idea to start with the default settings and only change them after investigating |
|
|
|
# how to improve the performances and how the keys LFU change over time, which |
|
|
@ -1292,8 +1367,12 @@ aof-rewrite-incremental-fsync yes |
|
|
|
# active-defrag-threshold-upper 100 |
|
|
|
|
|
|
|
# Minimal effort for defrag in CPU percentage |
|
|
|
# active-defrag-cycle-min 25 |
|
|
|
# active-defrag-cycle-min 5 |
|
|
|
|
|
|
|
# Maximal effort for defrag in CPU percentage |
|
|
|
# active-defrag-cycle-max 75 |
|
|
|
|
|
|
|
# Maximum number of set/hash/zset/list fields that will be processed from |
|
|
|
# the main dictionary scan |
|
|
|
# active-defrag-max-scan-fields 1000 |
|
|
|
|