# Redis 配置文件
# 當配置中需要配置內存大小時,可以使用 1k, 5GB, 4M 等類似的格式,其轉換方式如下(不區(qū)分大小寫) # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # 內存配置大小寫是一樣的.比如 1gb 1Gb 1GB 1gB
# daemonize no 默認情況下,redis不是在后臺運行的,如果需要在后臺運行,把該項的值更改為yes daemonize yes
# 當redis在后臺運行的時候,Redis默認會把pid文件放在/var/run/redis.pid,你可以配置到其他地址。 # 當運行多個redis服務時,需要指定不同的pid文件和端口 pidfile /var/run/redis.pid
# 指定redis運行的端口,默認是6379 port 6379
# 指定redis只接收來自于該IP地址的請求,如果不進行設置,那么將處理所有請求, # 在生產環(huán)境中最好設置該項 # bind 127.0.0.1
# Specify the path for the unix socket that will be used to listen for # incoming connections. There is no default, so Redis will not listen # on a unix socket when not specified. # # unixsocket /tmp/redis.sock # unixsocketperm 755
# 設置客戶端連接時的超時時間,單位為秒。當客戶端在這段時間內沒有發(fā)出任何指令,那么關閉該連接 # 0是關閉此設置 timeout 0
# 指定日志記錄級別 # Redis總共支持四個級別:debug、verbose、notice、warning,默認為verbose # debug 記錄很多信息,用于開發(fā)和測試 # varbose 有用的信息,不像debug會記錄那么多 # notice 普通的verbose,常用于生產環(huán)境 # warning 只有非常重要或者嚴重的信息會記錄到日志 loglevel debug
# 配置log文件地址 # 默認值為stdout,標準輸出,若后臺模式會輸出到/dev/null #logfile stdout logfile /var/log/redis/redis.log
# To enable logging to the system logger, just set 'syslog-enabled' to yes, # and optionally update the other syslog parameters to suit your needs. # syslog-enabled no
# Specify the syslog identity. # syslog-ident redis
# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. # syslog-facility local0
# 可用數(shù)據(jù)庫數(shù) # 默認值為16,默認數(shù)據(jù)庫為0,數(shù)據(jù)庫范圍在0-(database-1)之間 databases 16
################################ 快照 ################################# # # 保存數(shù)據(jù)到磁盤,格式如下: # # save <seconds> <changes> # # 指出在多長時間內,有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件rdb。 # 相當于條件觸發(fā)抓取快照,這個可以多個條件配合 # # 比如默認配置文件中的設置,就設置了三個條件 # # save 900 1 900秒內至少有1個key被改變 # save 300 10 300秒內至少有300個key被改變 # save 60 10000 60秒內至少有10000個key被改變
save 900 1 save 300 10 save 60 10000
# 存儲至本地數(shù)據(jù)庫時(持久化到rdb文件)是否壓縮數(shù)據(jù),默認為yes rdbcompression yes
# 本地持久化數(shù)據(jù)庫文件名,默認值為dump.rdb dbfilename dump.rdb
# 工作目錄 # # 數(shù)據(jù)庫鏡像備份的文件放置的路徑。 # 這里的路徑跟文件名要分開配置是因為redis在進行備份時,先會將當前數(shù)據(jù)庫的狀態(tài)寫入到一個臨時文件中,等備份完成時, # 再把該該臨時文件替換為上面所指定的文件,而這里的臨時文件和上面所配置的備份文件都會放在這個指定的路徑當中。 # # AOF文件也會存放在這個目錄下面 # # 注意這里必須制定一個目錄而不是文件 dir ./
################################# 復制 #################################
# 主從復制. 設置該數(shù)據(jù)庫為其他數(shù)據(jù)庫的從數(shù)據(jù)庫. # 設置當本機為slav服務時,設置master服務的IP地址及端口,在Redis啟動時,它會自動從master進行數(shù)據(jù)同步 # # slaveof <masterip> <masterport>
# 當master服務設置了密碼保護時(用requirepass制定的密碼) # slav服務連接master的密碼 # # masterauth <master-password>
# 當從庫同主機失去連接或者復制正在進行,從機庫有兩種運行方式: # # 1) 如果slave-serve-stale-data設置為yes(默認設置),從庫會繼續(xù)相應客戶端的請求 # # 2) 如果slave-serve-stale-data是指為no,出去INFO和SLAVOF命令之外的任何請求都會返回一個 # 錯誤"SYNC with master in progress" # slave-serve-stale-data yes
# 從庫會按照一個時間間隔向主庫發(fā)送PINGs.可以通過repl-ping-slave-period設置這個時間間隔,默認是10秒 # # repl-ping-slave-period 10
# repl-timeout 設置主庫批量數(shù)據(jù)傳輸時間或者ping回復時間間隔,默認值是60秒 # 一定要確保repl-timeout大于repl-ping-slave-period # repl-timeout 60
################################## 安全 ###################################
# 設置客戶端連接后進行任何其他指定前需要使用的密碼。 # 警告:因為redis速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒鐘進行150K次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解 # # requirepass foobared
# 命令重命名. # # 在一個共享環(huán)境下可以重命名相對危險的命令。比如把CONFIG重名為一個不容易猜測的字符。 # # 舉例: # # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # # 如果想刪除一個命令,直接把它重命名為一個空字符""即可,如下: # # rename-command CONFIG ""
################################### 約束 ####################################
# 設置同一時間最大客戶端連接數(shù),默認無限制,Redis可以同時打開的客戶端連接數(shù)為Redis進程可以打開的最大文件描述符數(shù), # 如果設置 maxclients 0,表示不作限制。 # 當客戶端連接數(shù)到達限制時,Redis會關閉新的連接并向客戶端返回max number of clients reached錯誤信息 # # maxclients 128
# 指定Redis最大內存限制,Redis在啟動時會把數(shù)據(jù)加載到內存中,達到最大內存后,Redis會先嘗試清除已到期或即將到期的Key # Redis同時也會移除空的list對象 # # 當此方法處理后,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作 # # 注意:Redis新的vm機制,會把Key存放內存,Value會存放在swap區(qū) # # maxmemory的設置比較適合于把redis當作于類似memcached的緩存來使用,而不適合當做一個真實的DB。 # 當把Redis當做一個真實的數(shù)據(jù)庫使用的時候,內存使用將是一個很大的開銷 # maxmemory <bytes>
# 當內存達到最大值的時候Redis會選擇刪除哪些數(shù)據(jù)?有五種方式可供選擇 # # volatile-lru -> 利用LRU算法移除設置過過期時間的key (LRU:最近使用 Least Recently Used ) # allkeys-lru -> 利用LRU算法移除任何key # volatile-random -> 移除設置過過期時間的隨機key # allkeys->random -> remove a random key, any key # volatile-ttl -> 移除即將過期的key(minor TTL) # noeviction -> 不移除任何可以,只是返回一個寫錯誤 # # 注意:對于上面的策略,如果沒有合適的key可以移除,當寫的時候Redis會返回一個錯誤 # # 寫命令包括: set setnx setex append # incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd # sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby # zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby # getset mset msetnx exec sort # # 默認是: # # maxmemory-policy volatile-lru
# LRU 和 minimal TTL 算法都不是精準的算法,但是相對精確的算法(為了節(jié)省內存),隨意你可以選擇樣本大小進行檢測。 # Redis默認的灰選擇3個樣本進行檢測,你可以通過maxmemory-samples進行設置 # # maxmemory-samples 3
############################## AOF ###############################
# 默認情況下,redis會在后臺異步的把數(shù)據(jù)庫鏡像備份到磁盤,但是該備份是非常耗時的,而且備份也不能很頻繁,如果發(fā)生諸如拉閘限電、拔插頭等狀況,那么將造成比較大范圍的數(shù)據(jù)丟失。 # 所以redis提供了另外一種更加高效的數(shù)據(jù)庫備份及災難恢復方式。 # 開啟append only模式之后,redis會把所接收到的每一次寫操作請求都追加到appendonly.aof文件中,當redis重新啟動時,會從該文件恢復出之前的狀態(tài)。 # 但是這樣會造成appendonly.aof文件過大,所以redis還支持了BGREWRITEAOF指令,對appendonly.aof 進行重新整理。 # 你可以同時開啟asynchronous dumps 和 AOF
appendonly no
# AOF文件名稱 (默認: "appendonly.aof") # appendfilename appendonly.aof
# Redis支持三種同步AOF文件的策略: # # no: 不進行同步,系統(tǒng)去操作 . Faster. # always: always表示每次有寫操作都進行同步. Slow, Safest. # everysec: 表示對寫操作進行累積,每秒同步一次. Compromise. # # 默認是"everysec",按照速度和安全折中這是最好的。 # 如果想讓Redis能更高效的運行,你也可以設置為"no",讓操作系統(tǒng)決定什么時候去執(zhí)行 # 或者相反想讓數(shù)據(jù)更安全你也可以設置為"always" # # 如果不確定就用 "everysec".
# appendfsync always appendfsync everysec # appendfsync no
# AOF策略設置為always或者everysec時,后臺處理進程(后臺保存或者AOF日志重寫)會執(zhí)行大量的I/O操作 # 在某些Linux配置中會阻止過長的fsync()請求。注意現(xiàn)在沒有任何修復,即使fsync在另外一個線程進行處理 # # 為了減緩這個問題,可以設置下面這個參數(shù)no-appendfsync-on-rewrite # # This means that while another child is saving the durability of Redis is # the same as "appendfsync none", that in pratical terms means that it is # possible to lost up to 30 seconds of log in the worst scenario (with the # default Linux settings). # # If you have latency problems turn this to "yes". Otherwise leave it as # "no" that is the safest pick from the point of view of durability. no-appendfsync-on-rewrite no
# Automatic rewrite of the append only file. # AOF 自動重寫 # 當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日志文件進行重寫 # # 它是這樣工作的:Redis會記住上次進行些日志后文件的大小(如果從開機以來還沒進行過重寫,那日子大小在開機的時候確定) # # 基礎大小會同現(xiàn)在的大小進行比較。如果現(xiàn)在的大小比基礎大小大制定的百分比,重寫功能將啟動 # 同時需要指定一個最小大小用于AOF重寫,這個用于阻止即使文件很小但是增長幅度很大也去重寫AOF文件的情況 # 設置 percentage 為0就關閉這個特性
auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb
################################## SLOW LOG ###################################
# Redis Slow Log 記錄超過特定執(zhí)行時間的命令。執(zhí)行時間不包括I/O計算比如連接客戶端,返回結果等,只是命令執(zhí)行時間 # # 可以通過兩個參數(shù)設置slow log:一個是告訴Redis執(zhí)行超過多少時間被記錄的參數(shù)slowlog-log-slower-than(微妙), # 另一個是slow log 的長度。當一個新命令被記錄的時候最早的命令將被從隊列中移除
# 下面的時間以微妙微單位,因此1000000代表一分鐘。 # 注意制定一個負數(shù)將關閉慢日志,而設置為0將強制每個命令都會記錄 slowlog-log-slower-than 10000
# 對日志長度沒有限制,只是要注意它會消耗內存 # 可以通過 SLOWLOG RESET 回收被慢日志消耗的內存 slowlog-max-len 1024
################################ VM ###############################
### WARNING! Virtual Memory is deprecated in Redis 2.4 ### The use of Virtual Memory is strongly discouraged.
# Virtual Memory allows Redis to work with datasets bigger than the actual # amount of RAM needed to hold the whole dataset in memory. # In order to do so very used keys are taken in memory while the other keys # are swapped into a swap file, similarly to what operating systems do # with memory pages. # # To enable VM just set 'vm-enabled' to yes, and set the following three # VM parameters accordingly to your needs.
vm-enabled no # vm-enabled yes
# This is the path of the Redis swap file. As you can guess, swap files # can't be shared by different Redis instances, so make sure to use a swap # file for every redis process you are running. Redis will complain if the # swap file is already in use. # # The best kind of storage for the Redis swap file (that's accessed at random) # is a Solid State Disk (SSD). # # *** WARNING *** if you are using a shared hosting the default of putting # the swap file under /tmp is not secure. Create a dir with access granted # only to Redis user and configure Redis to create the swap file there. vm-swap-file /tmp/redis.swap
# vm-max-memory configures the VM to use at max the specified amount of # RAM. Everything that deos not fit will be swapped on disk *if* possible, that # is, if there is still enough contiguous space in the swap file. # # With vm-max-memory 0 the system will swap everything it can. Not a good # default, just specify the max amount of RAM you can in bytes, but it's # better to leave some margin. For instance specify an amount of RAM # that's more or less between 60 and 80% of your free RAM. vm-max-memory 0
# Redis swap files is split into pages. An object can be saved using multiple # contiguous pages, but pages can't be shared between different objects. # So if your page is too big, small objects swapped out on disk will waste # a lot of space. If you page is too small, there is less space in the swap # file (assuming you configured the same number of total swap file pages). # # If you use a lot of small objects, use a page size of 64 or 32 bytes. # If you use a lot of big objects, use a bigger page size. # If unsure, use the default :) vm-page-size 32
# Number of total memory pages in the swap file. # Given that the page table (a bitmap of free/used pages) is taken in memory, # every 8 pages on disk will consume 1 byte of RAM. # # The total swap size is vm-page-size * vm-pages # # With the default of 32-bytes memory pages and 134217728 pages Redis will # use a 4 GB swap file, that will use 16 MB of RAM for the page table. # # It's better to use the smallest acceptable value for your application, # but the default is large in order to work in most conditions. vm-pages 134217728
# Max number of VM I/O threads running at the same time. # This threads are used to read/write data from/to swap file, since they # also encode and decode objects from disk to memory or the reverse, a bigger # number of threads can help with big objects even if they can't help with # I/O itself as the physical device may not be able to couple with many # reads/writes operations at the same time. # # The special value of 0 turn off threaded I/O and enables the blocking # Virtual Memory implementation. vm-max-threads 4
############################### ADVANCED CONFIG ###############################
# 當hash中包含超過指定元素個數(shù)并且最大的元素沒有超過臨界時, # hash將以一種特殊的編碼方式(大大減少內存使用)來存儲,這里可以設置這兩個臨界值 # Redis Hash對應Value內部實際就是一個HashMap,實際這里會有2種不同實現(xiàn), # 這個Hash的成員比較少時Redis為了節(jié)省內存會采用類似一維數(shù)組的方式來緊湊存儲,而不會采用真正的HashMap結構,對應的value redisObject的encoding為zipmap, # 當成員數(shù)量增大時會自動轉成真正的HashMap,此時encoding為ht。 hash-max-zipmap-entries 512 hash-max-zipmap-value 64
# list數(shù)據(jù)類型多少節(jié)點以下會采用去指針的緊湊存儲格式。 # list數(shù)據(jù)類型節(jié)點值大小小于多少字節(jié)會采用緊湊存儲格式。 list-max-ziplist-entries 512 list-max-ziplist-value 64
# set數(shù)據(jù)類型內部數(shù)據(jù)如果全部是數(shù)值型,且包含多少節(jié)點以下會采用緊湊格式存儲。 set-max-intset-entries 512
# zsort數(shù)據(jù)類型多少節(jié)點以下會采用去指針的緊湊存儲格式。 # zsort數(shù)據(jù)類型節(jié)點值大小小于多少字節(jié)會采用緊湊存儲格式。 zset-max-ziplist-entries 128 zset-max-ziplist-value 64
# Redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行重新hash,可以降低內存的使用 # # 當你的使用場景中,有非常嚴格的實時性需要,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置為no。 # # 如果沒有這么嚴格的實時性要求,可以設置為yes,以便能夠盡可能快的釋放內存 activerehashing yes
################################## INCLUDES ###################################
# 指定包含其它的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件
# include /path/to/local.conf # include /path/to/other.conf
redis.conf 默認配置: - # Redis configuration file example
-
- # Note on units: when memory size is needed, it is possible to specify
- # it in the usual form of 1k 5GB 4M and so forth:
- #
- # 1k => 1000 bytes
- # 1kb => 1024 bytes
- # 1m => 1000000 bytes
- # 1mb => 1024*1024 bytes
- # 1g => 1000000000 bytes
- # 1gb => 1024*1024*1024 bytes
- #
- # units are case insensitive so 1GB 1Gb 1gB are all the same.
-
- # By default Redis does not run as a daemon. Use 'yes' if you need it.
- # Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
- daemonize no
-
- # When running daemonized, Redis writes a pid file in /var/run/redis.pid by
- # default. You can specify a custom pid file location here.
- pidfile /var/run/redis.pid
-
- # Accept connections on the specified port, default is 6379.
- # If port 0 is specified Redis will not listen on a TCP socket.
- port 6379
-
- # If you want you can bind a single interface, if the bind option is not
- # specified all the interfaces will listen for incoming connections.
- #
- # bind 127.0.0.1
-
- # Specify the path for the unix socket that will be used to listen for
- # incoming connections. There is no default, so Redis will not listen
- # on a unix socket when not specified.
- #
- # unixsocket /tmp/redis.sock
- # unixsocketperm 755
-
- # Close the connection after a client is idle for N seconds (0 to disable)
- timeout 0
-
- # TCP keepalive.
- #
- # If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence
- # of communication. This is useful for two reasons:
- #
- # 1) Detect dead peers.
- # 2) Take the connection alive from the point of view of network
- # equipment in the middle.
- #
- # On Linux, the specified value (in seconds) is the period used to send ACKs.
- # Note that to close the connection the double of the time is needed.
- # On other kernels the period depends on the kernel configuration.
- #
- # A reasonable value for this option is 60 seconds.
- tcp-keepalive 0
-
- # Specify the server verbosity level.
- # This can be one of:
- # debug (a lot of information, useful for development/testing)
- # verbose (many rarely useful info, but not a mess like the debug level)
- # notice (moderately verbose, what you want in production probably)
- # warning (only very important / critical messages are logged)
- loglevel notice
-
- # Specify the log file name. Also 'stdout' can be used to force
- # Redis to log on the standard output. Note that if you use standard
- # output for logging but daemonize, logs will be sent to /dev/null
- logfile stdout
-
- # To enable logging to the system logger, just set 'syslog-enabled' to yes,
- # and optionally update the other syslog parameters to suit your needs.
- # syslog-enabled no
-
- # Specify the syslog identity.
- # syslog-ident redis
-
- # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
- # syslog-facility local0
-
- # Set the number of databases. The default database is DB 0, you can select
- # a different one on a per-connection basis using SELECT <dbid> where
- # dbid is a number between 0 and 'databases'-1
- databases 16
-
- ################################ SNAPSHOTTING #################################
- #
- # Save the DB on disk:
- #
- # save <seconds> <changes>
- #
- # Will save the DB if both the given number of seconds and the given
- # number of write operations against the DB occurred.
- #
- # In the example below the behaviour will be to save:
- # after 900 sec (15 min) if at least 1 key changed
- # after 300 sec (5 min) if at least 10 keys changed
- # after 60 sec if at least 10000 keys changed
- #
- # Note: you can disable saving at all commenting all the "save" lines.
- #
- # It is also possible to remove all the previously configured save
- # points by adding a save directive with a single empty string argument
- # like in the following example:
- #
- # save ""
-
- save 900 1
- save 300 10
- save 60 10000
-
- # By default Redis will stop accepting writes if RDB snapshots are enabled
- # (at least one save point) and the latest background save failed.
- # This will make the user aware (in an hard way) that data is not persisting
- # on disk properly, otherwise chances are that no one will notice and some
- # distater will happen.
- #
- # If the background saving process will start working again Redis will
- # automatically allow writes again.
- #
- # However if you have setup your proper monitoring of the Redis server
- # and persistence, you may want to disable this feature so that Redis will
- # continue to work as usually even if there are problems with disk,
- # permissions, and so forth.
- stop-writes-on-bgsave-error yes
-
- # Compress string objects using LZF when dump .rdb databases?
- # For default that's set to 'yes' as it's almost always a win.
- # If you want to save some CPU in the saving child set it to 'no' but
- # the dataset will likely be bigger if you have compressible values or keys.
- rdbcompression yes
-
- # Since version 5 of RDB a CRC64 checksum is placed at the end of the file.
- # This makes the format more resistant to corruption but there is a performance
- # hit to pay (around 10%) when saving and loading RDB files, so you can disable it
- # for maximum performances.
- #
- # RDB files created with checksum disabled have a checksum of zero that will
- # tell the loading code to skip the check.
- rdbchecksum yes
-
- # The filename where to dump the DB
- dbfilename dump.rdb
-
- # The working directory.
- #
- # The DB will be written inside this directory, with the filename specified
- # above using the 'dbfilename' configuration directive.
- #
- # The Append Only File will also be created inside this directory.
- #
- # Note that you must specify a directory here, not a file name.
- dir ./
-
- ################################# REPLICATION #################################
-
- # Master-Slave replication. Use slaveof to make a Redis instance a copy of
- # another Redis server. Note that the configuration is local to the slave
- # so for example it is possible to configure the slave to save the DB with a
- # different interval, or to listen to another port, and so on.
- #
- # slaveof <masterip> <masterport>
-
- # If the master is password protected (using the "requirepass" configuration
- # directive below) it is possible to tell the slave to authenticate before
- # starting the replication synchronization process, otherwise the master will
- # refuse the slave 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:
- #
- # 1) if slave-serve-stale-data is set to 'yes' (the default) the slave 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
- # an error "SYNC with master in progress" to all the kind of commands
- # but to INFO and SLAVEOF.
- #
- slave-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
- # may also cause problems if clients are writing to it because of a
- # misconfiguration.
- #
- # Since Redis 2.6 by default slaves are read-only.
- #
- # Note: read only slaves 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
- # such as CONFIG, DEBUG, and so forth. To a limited extend you can improve
- # security of read only slaves using 'rename-command' to shadow all the
- # administrative / dangerous commands.
- slave-read-only yes
-
- # 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
- # seconds.
- #
- # repl-ping-slave-period 10
-
- # The following option sets a timeout for both Bulk transfer I/O timeout and
- # master data or ping response timeout. The default value is 60 seconds.
- #
- # 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.
- #
- # repl-timeout 60
-
- # Disable TCP_NODELAY on the slave 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
- # Linux kernels using a default configuration.
- #
- # If you select "no" the delay for data to appear on the slave 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
- # be a good idea.
- repl-disable-tcp-nodelay no
-
- # 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
- # 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
- # pick the one wtih 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
- # Redis Sentinel for promotion.
- #
- # By default the priority is 100.
- slave-priority 100
-
- ################################## SECURITY ###################################
-
- # Require clients to issue AUTH <PASSWORD> before processing any other
- # commands. This might be useful in environments in which you do not trust
- # others with access to the host running redis-server.
- #
- # This should stay commented out for backward compatibility and because most
- # people do not need auth (e.g. they run their own servers).
- #
- # Warning: since Redis is pretty fast an outside user can try up to
- # 150k passwords per second against a good box. This means that you should
- # use a very strong password otherwise it will be very easy to break.
- #
- # requirepass foobared
-
- # Command renaming.
- #
- # It is possible to change the name of dangerous commands in a shared
- # environment. For instance the CONFIG command may be renamed into something
- # hard to guess so that it will still be available for internal-use tools
- # but not available for general clients.
- #
- # Example:
- #
- # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
- #
- # It is also possible to completely kill a command by renaming it into
- # an empty string:
- #
- # 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.
-
- ################################### LIMITS ####################################
-
- # Set the max number of connected clients at the same time. By default
- # this limit is set to 10000 clients, however if the Redis server is not
- # able to configure the process file limit to allow for the specified limit
- # the max number of allowed clients is set to the current file limit
- # minus 32 (as Redis reserves a few file descriptors for internal uses).
- #
- # Once the limit is reached Redis will close all the new connections sending
- # an error 'max number of clients reached'.
- #
- # maxclients 10000
-
- # Don't use more memory than the specified amount of bytes.
- # When the memory limit is reached Redis will try to remove keys
- # accordingly to the eviction policy selected (see maxmemmory-policy).
- #
- # If Redis can't remove keys according to the policy, or if the policy is
- # set to 'noeviction', Redis will start to reply with errors to commands
- # that would use more memory, like SET, LPUSH, and so on, and will continue
- # to reply to read-only commands like GET.
- #
- # This option is usually useful when using Redis as an LRU cache, or to set
- # an 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
- # 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
- # 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
- # output buffers (but this is not needed if the policy is 'noeviction').
- #
- # maxmemory <bytes>
-
- # MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
- # is reached. You can select among five behaviors:
- #
- # volatile-lru -> remove the key with an expire set using an LRU algorithm
- # allkeys-lru -> remove any key accordingly to the LRU algorithm
- # volatile-random -> remove a random key with an expire set
- # allkeys-random -> remove a random key, any key
- # volatile-ttl -> remove the key with the nearest expire time (minor TTL)
- # noeviction -> don't expire at all, just return an error on write operations
- #
- # Note: with any of the above policies, Redis will return an error on write
- # operations, when there are not suitable keys for eviction.
- #
- # At the date of writing this commands are: set setnx setex append
- # incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
- # sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby
- # zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby
- # getset mset msetnx exec sort
- #
- # The default is:
- #
- # maxmemory-policy volatile-lru
-
- # LRU and minimal TTL algorithms are not precise algorithms but approximated
- # algorithms (in order to save memory), so you can select as well the sample
- # size to check. For instance for default Redis will check three keys and
- # pick the one that was used less recently, you can change the sample size
- # using the following configuration directive.
- #
- # maxmemory-samples 3
-
- ############################## APPEND ONLY MODE ###############################
-
- # By default Redis asynchronously dumps the dataset on disk. This mode is
- # good enough in many applications, but an issue with the Redis process or
- # a power outage may result into a few minutes of writes lost (depending on
- # the configured save points).
- #
- # The Append Only File is an alternative persistence mode that provides
- # much better durability. For instance using the default data fsync policy
- # (see later in the config file) Redis can lose just one second of writes in a
- # dramatic event like a server power outage, or a single write if something
- # wrong with the Redis process itself happens, but the operating system is
- # still running correctly.
- #
- # AOF and RDB persistence can be enabled at the same time without problems.
- # If the AOF is enabled on startup Redis will load the AOF, that is the file
- # with the better durability guarantees.
- #
- # Please check http:///topics/persistence for more information.
-
- appendonly no
-
- # The name of the append only file (default: "appendonly.aof")
- # appendfilename appendonly.aof
-
- # The fsync() call tells the Operating System to actually write data on disk
- # instead to wait for more data in the output buffer. Some OS will really flush
- # data on disk, some other OS will just try to do it ASAP.
- #
- # Redis supports three different modes:
- #
- # no: don't fsync, just let the OS flush the data when it wants. Faster.
- # always: fsync after every write to the append only log . Slow, Safest.
- # everysec: fsync only one time every second. Compromise.
- #
- # The default is "everysec", as that's usually the right compromise between
- # speed and data safety. It's up to you to understand if you can relax this to
- # "no" that will let the operating system flush the output buffer when
- # it wants, for better performances (but if you can live with the idea of
- # some data loss consider the default persistence mode that's snapshotting),
- # or on the contrary, use "always" that's very slow but a bit safer than
- # everysec.
- #
- # More details please check the following article:
- # http:///post/redis-persistence-demystified.html
- #
- # If unsure, use "everysec".
-
- # appendfsync always
- appendfsync everysec
- # appendfsync no
-
- # When the AOF fsync policy is set to always or everysec, and a background
- # saving process (a background save or AOF log background rewriting) is
- # performing a lot of I/O against the disk, in some Linux configurations
- # Redis may block too long on the fsync() call. Note that there is no fix for
- # this currently, as even performing fsync in a different thread will block
- # our synchronous write(2) call.
- #
- # In order to mitigate this problem it's possible to use the following option
- # that will prevent fsync() from being called in the main process while a
- # BGSAVE or BGREWRITEAOF is in progress.
- #
- # This means that while another child is saving, the durability of Redis is
- # the same as "appendfsync none". In practical terms, this means that it is
- # possible to lose up to 30 seconds of log in the worst scenario (with the
- # default Linux settings).
- #
- # If you have latency problems turn this to "yes". Otherwise leave it as
- # "no" that is the safest pick from the point of view of durability.
- no-appendfsync-on-rewrite no
-
- # Automatic rewrite of the append only file.
- # Redis is able to automatically rewrite the log file implicitly calling
- # BGREWRITEAOF when the AOF log size grows by the specified percentage.
- #
- # This is how it works: Redis remembers the size of the AOF file after the
- # latest rewrite (if no rewrite has happened since the restart, the size of
- # the AOF at startup is used).
- #
- # This base size is compared to the current size. If the current size is
- # bigger than the specified percentage, the rewrite is triggered. Also
- # you need to specify a minimal size for the AOF file to be rewritten, this
- # is useful to avoid rewriting the AOF file even if the percentage increase
- # is reached but it is still pretty small.
- #
- # Specify a percentage of zero in order to disable the automatic AOF
- # rewrite feature.
-
- auto-aof-rewrite-percentage 100
- auto-aof-rewrite-min-size 64mb
-
- ################################ LUA SCRIPTING ###############################
-
- # Max execution time of a Lua script in milliseconds.
- #
- # If the maximum execution time is reached Redis will log that a script is
- # still in execution after the maximum allowed time and will start to
- # reply to queries with an error.
- #
- # When a long running script exceed the maximum execution time only the
- # SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be
- # used to stop a script that did not yet called write commands. The second
- # is the only way to shut down the server in the case a write commands was
- # already issue by the script but the user don't want to wait for the natural
- # termination of the script.
- #
- # Set it to 0 or a negative value for unlimited execution without warnings.
- lua-time-limit 5000
-
- ################################## SLOW LOG ###################################
-
- # The Redis Slow Log is a system to log queries that exceeded a specified
- # execution time. The execution time does not include the I/O operations
- # like talking with the client, sending the reply and so forth,
- # but just the time needed to actually execute the command (this is the only
- # stage of command execution where the thread is blocked and can not serve
- # other requests in the meantime).
- #
- # You can configure the slow log with two parameters: one tells Redis
- # what is the execution time, in microseconds, to exceed in order for the
- # command to get logged, and the other parameter is the length of the
- # slow log. When a new command is logged the oldest one is removed from the
- # queue of logged commands.
-
- # The following time is expressed in microseconds, so 1000000 is equivalent
- # to one second. Note that a negative number disables the slow log, while
- # a value of zero forces the logging of every command.
- slowlog-log-slower-than 10000
-
- # There is no limit to this length. Just be aware that it will consume memory.
- # You can reclaim memory used by the slow log with SLOWLOG RESET.
- slowlog-max-len 128
-
- ############################### ADVANCED CONFIG ###############################
-
- # Hashes are encoded using a memory efficient data structure when they have a
- # small number of entries, and the biggest entry does not exceed a given
- # threshold. These thresholds can be configured using the following directives.
- hash-max-ziplist-entries 512
- hash-max-ziplist-value 64
-
- # Similarly to hashes, small lists are also encoded in a special way in order
- # to save a lot of space. The special representation is only used when
- # you are under the following limits:
- list-max-ziplist-entries 512
- list-max-ziplist-value 64
-
- # Sets have a special encoding in just one case: when a set is composed
- # of just strings that happens to be integers in radix 10 in the range
- # of 64 bit signed integers.
- # The following configuration setting sets the limit in the size of the
- # set in order to use this special memory saving encoding.
- set-max-intset-entries 512
-
- # Similarly to hashes and lists, sorted sets are also specially encoded in
- # order to save a lot of space. This encoding is only used when the length and
- # elements of a sorted set are below the following limits:
- zset-max-ziplist-entries 128
- zset-max-ziplist-value 64
-
- # 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)
- # performs a lazy rehashing: the more operation you run into an hash table
- # that is rehashing, the more rehashing "steps" are performed, so if the
- # server is idle the rehashing is never complete and some more memory is used
- # by the hash table.
- #
- # The default is to use this millisecond 10 times every second in order to
- # active rehashing the main dictionaries, freeing memory when possible.
- #
- # If unsure:
- # use "activerehashing no" if you have hard latency requirements and it is
- # not a good thing in your environment that Redis can reply form time to time
- # to queries with 2 milliseconds delay.
- #
- # use "activerehashing yes" if you don't have such hard requirements but
- # want to free memory asap when possible.
- activerehashing yes
-
- # The client output buffer limits can be used to force disconnection of clients
- # that are not reading data from the server fast enough for some reason (a
- # common reason is that a Pub/Sub client can't consume messages as fast as the
- # publisher can produce them).
- #
- # The limit can be set differently for the three different classes of clients:
- #
- # normal -> normal clients
- # slave -> slave clients and MONITOR clients
- # pubsub -> clients subcribed to at least one pubsub channel or pattern
- #
- # The syntax of every client-output-buffer-limit directive is the following:
- #
- # client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds>
- #
- # A client is immediately disconnected once the hard limit is reached, or if
- # the soft limit is reached and remains reached for the specified number of
- # seconds (continuously).
- # So for instance if the hard limit is 32 megabytes and the soft limit is
- # 16 megabytes / 10 seconds, the client will get disconnected immediately
- # if the size of the output buffers reach 32 megabytes, but will also get
- # disconnected if the client reaches 16 megabytes and continuously overcomes
- # the limit for 10 seconds.
- #
- # By default normal clients are not limited because they don't receive data
- # without asking (in a push way), but just after a request, so only
- # 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.
- #
- # 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 pubsub 32mb 8mb 60
-
- # Redis calls an internal function to perform many background tasks, like
- # closing connections of clients in timeot, purging expired keys that are
- # never requested, and so forth.
- #
- # Not all tasks are perforemd with the same frequency, but Redis checks for
- # tasks to perform accordingly to the specified "hz" value.
- #
- # By default "hz" is set to 10. Raising the value will use more CPU when
- # Redis is idle, but at the same time will make Redis more responsive when
- # there are many keys expiring at the same time, and timeouts may be
- # handled with more precision.
- #
- # The range is between 1 and 500, however a value over 100 is usually not
- # a good idea. Most users should use the default of 10 and raise this up to
- # 100 only in environments where very low latency is required.
- hz 10
-
- # 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
-
- ################################## INCLUDES ###################################
-
- # Include one or more other config files here. This is useful if you
- # have a standard template that goes to all Redis server but also need
- # to customize a few per-server settings. Include files can include
- # other files, so use this wisely.
- #
- # include /path/to/local.conf
- # include /path/to/other.conf
|