1. 程式人生 > >Reids配置檔案redis.conf中文詳解

Reids配置檔案redis.conf中文詳解

redis的各種配置都是在redis.conf檔案中進行配置的,有關其每項配置的中文詳細解釋如下。

對應的中文版解釋redis.conf :

# Redis 配置檔案示例

# 注意單位: 當需要配置記憶體大小時, 可能需要指定像1k,5GB,4M等常見格式
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 單位是對大小寫不敏感的 1GB 1Gb 1gB 是相同的。

################################## INCLUDES ###################################

# 可以在這裡包含一個或多個其他的配置檔案。如果你有一個適用於所有Redis伺服器的標準配置模板
# 但也需要一些每個伺服器自定義的設定,這個功能將很有用。被包含的配置檔案也可以包含其他配置檔案,
# 所以需要謹慎的使用這個功能。
#
# 注意“inclue”選項不能被admin或Redis哨兵的"CONFIG REWRITE"命令重寫。
# 因為Redis總是使用最後解析的配置行最為配置指令的值, 你最好在這個檔案的開頭配置includes來
# 避免它在執行時重寫配置。
# 如果相反你想用includes的配置覆蓋原來的配置,你最好在該檔案的最後使用include
#
# include /path/to/local.conf
# include /path/to/other.conf

################################ GENERAL  #####################################

# 預設Rdis不會作為守護程序執行。如果需要的話配置成'yes'
# 注意配置成守護程序後Redis會將程序號寫入檔案/var/run/redis.pid
daemonize no

# 當以守護程序方式執行時,預設Redis會把程序ID寫到 /var/run/redis.pid。你可以在這裡修改路徑。
pidfile /var/run/redis.pid

# 接受連線的特定埠,預設是6379
# 如果埠設定為0,Redis就不會監聽TCP套接字。
port 6379

# TCP listen() backlog.
#
# 在高併發環境下你需要一個高backlog值來避免慢客戶端連線問題。注意Linux核心默默地將這個值減小
# 到/proc/sys/net/core/somaxconn的值,所以需要確認增大somaxconn和tcp_max_syn_backlog
# 兩個值來達到想要的效果。
tcp-backlog 511

# 預設Redis監聽伺服器上所有可用網路介面的連線。可以用"bind"配置指令跟一個或多個ip地址來實現
# 監聽一個或多個網路介面
#
# 示例:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1

# 指定用來監聽Unix套套接字的路徑。沒有預設值, 所以在沒有指定的情況下Redis不會監聽Unix套接字
#
# unixsocket /tmp/redis.sock
# unixsocketperm 755

# 一個客戶端空閒多少秒後關閉連線。(0代表禁用,永不關閉)
timeout 0

# TCP keepalive.
#
# 如果非零,則設定SO_KEEPALIVE選項來向空閒連線的客戶端傳送ACK,由於以下兩個原因這是很有用的:
#
# 1)能夠檢測無響應的對端
# 2)讓該連線中間的網路裝置知道這個連線還存活
#
# 在Linux上,這個指定的值(單位:秒)就是傳送ACK的時間間隔。
# 注意:要關閉這個連線需要兩倍的這個時間值。
# 在其他核心上這個時間間隔由核心配置決定
#
# 這個選項的一個合理值是60秒
tcp-keepalive 0

# 指定伺服器除錯等級
# 可能值:
# debug (大量資訊,對開發/測試有用)
# verbose (很多精簡的有用資訊,但是不像debug等級那麼多)
# notice (適量的資訊,基本上是你生產環境中需要的)
# warning (只有很重要/嚴重的資訊會記錄下來)
loglevel notice

# 指明日誌檔名。也可以使用"stdout"來強制讓Redis把日誌資訊寫到標準輸出上。
# 注意:如果Redis以守護程序方式執行,而設定日誌顯示到標準輸出的話,日誌會發送到/dev/null
logfile ""

# 要使用系統日誌記錄器,只要設定 "syslog-enabled" 為 "yes" 就可以了。
# 然後根據需要設定其他一些syslog引數就可以了。
# syslog-enabled no

# 指明syslog身份
# syslog-ident redis

# 指明syslog的裝置。必須是user或LOCAL0 ~ LOCAL7之一。
# syslog-facility local0

# 設定資料庫個數。預設資料庫是 DB 0,
# 可以通過select <dbid>  (0 <= dbid <= 'databases' - 1 )來為每個連線使用不同的資料庫。
databases 16

################################ SNAPSHOTTING  ################################
#
# 把資料庫存到磁碟上:
#
#   save <seconds> <changes>
#   
#   會在指定秒數和資料變化次數之後把資料庫寫到磁碟上。
#
#   下面的例子將會進行把資料寫入磁碟的操作:
#   900秒(15分鐘)之後,且至少1次變更
#   300秒(5分鐘)之後,且至少10次變更
#   60秒之後,且至少10000次變更
#
#   注意:你要想不寫磁碟的話就把所有 "save" 設定註釋掉就行了。
#
#   通過新增一條帶空字串引數的save指令也能移除之前所有配置的save指令
#   像下面的例子:
#   save "" 

save 900 1
save 300 10
save 60 10000

# 預設如果開啟RDB快照(至少一條save指令)並且最新的後臺儲存失敗,Redis將會停止接受寫操作
# 這將使使用者知道資料沒有正確的持久化到硬碟,否則可能沒人注意到並且造成一些災難。
#
# 如果後臺儲存程序能重新開始工作,Redis將自動允許寫操作
#
# 然而如果你已經部署了適當的Redis伺服器和持久化的監控,你可能想關掉這個功能以便於即使是
# 硬碟,許可權等出問題了Redis也能夠像平時一樣正常工作,
stop-writes-on-bgsave-error yes

# 當匯出到 .rdb 資料庫時是否用LZF壓縮字串物件?
# 預設設定為 "yes",因為幾乎在任何情況下它都是不錯的。
# 如果你想節省CPU的話你可以把這個設定為 "no",但是如果你有可壓縮的key和value的話,
# 那資料檔案就會更大了。
rdbcompression yes

# 因為版本5的RDB有一個CRC64演算法的校驗和放在了檔案的最後。這將使檔案格式更加可靠但在
# 生產和載入RDB檔案時,這有一個性能消耗(大約10%),所以你可以關掉它來獲取最好的效能。
#
# 生成的關閉校驗的RDB檔案有一個0的校驗和,它將告訴載入程式碼跳過檢查
rdbchecksum yes

# 持久化資料庫的檔名
dbfilename dump.rdb

# 工作目錄
#
# 資料庫會寫到這個目錄下,檔名就是上面的 "dbfilename" 的值。
# 
# 累加檔案也放這裡。
# 
# 注意你這裡指定的必須是目錄,不是檔名。
dir ./

################################# REPLICATION #################################
# 主從同步。通過 slaveof 指令來實現Redis例項的備份。
# 注意,這裡是本地從遠端複製資料。也就是說,本地可以有不同的資料庫檔案、繫結不同的IP、監聽
# 不同的埠。
#
# slaveof <masterip> <masterport>

# 如果master設定了密碼保護(通過 "requirepass" 選項來配置),那麼slave在開始同步之前必須
# 進行身份驗證,否則它的同步請求會被拒絕。
#
# masterauth <master-password>

# 當一個slave失去和master的連線,或者同步正在進行中,slave的行為有兩種可能:
#
# 1) 如果 slave-serve-stale-data 設定為 "yes" (預設值),slave會繼續響應客戶端請求,
#    可能是正常資料,也可能是還沒獲得值的空資料。
# 2) 如果 slave-serve-stale-data 設定為 "no",slave會回覆"正在從master同步
#   (SYNC with master in progress)"來處理各種請求,除了 INFO 和 SLAVEOF 命令。
#
slave-serve-stale-data yes

# 你可以配置salve例項是否接受寫操作。可寫的slave例項可能對儲存臨時資料比較有用(因為寫入salve
# 的資料在同master同步之後將很容被刪除),但是如果客戶端由於配置錯誤在寫入時也可能產生一些問題。
#
# 從Redis2.6預設所有的slave為只讀
#
# 注意:只讀的slave不是為了暴露給網際網路上不可信的客戶端而設計的。它只是一個防止例項誤用的保護層。
# 一個只讀的slave支援所有的管理命令比如config,debug等。為了限制你可以用'rename-command'來
# 隱藏所有的管理和危險命令來增強只讀slave的安全性
slave-read-only yes

# slave根據指定的時間間隔向master傳送ping請求。
# 時間間隔可以通過 repl_ping_slave_period 來設定。
# 預設10秒。
#
# repl-ping-slave-period 10

# 以下選項設定同步的超時時間
#
# 1)slave在與master SYNC期間有大量資料傳輸,造成超時
# 2)在slave角度,master超時,包括資料、ping等
# 3)在master角度,slave超時,當master傳送REPLCONF ACK pings
# 
# 確保這個值大於指定的repl-ping-slave-period,否則在主從間流量不高時每次都會檢測到超時
#
# repl-timeout 60

# 是否在slave套接字傳送SYNC之後禁用 TCP_NODELAY ?
#
# 如果你選擇“yes”Redis將使用更少的TCP包和頻寬來向slaves傳送資料。但是這將使資料傳輸到slave
# 上有延遲,Linux核心的預設配置會達到40毫秒
#
# 如果你選擇了 "no" 資料傳輸到salve的延遲將會減少但要使用更多的頻寬
#
# 預設我們會為低延遲做優化,但高流量情況或主從之間的跳數過多時,把這個選項設定為“yes”
# 是個不錯的選擇。
repl-disable-tcp-nodelay no

# 設定資料備份的backlog大小。backlog是一個slave在一段時間內斷開連線時記錄salve資料的緩衝,
# 所以一個slave在重新連線時,不必要全量的同步,而是一個增量同步就足夠了,將在斷開連線的這段
# 時間內slave丟失的部分資料傳送給它。
#
# 同步的backlog越大,slave能夠進行增量同步並且允許斷開連線的時間就越長。
#
# backlog只分配一次並且至少需要一個slave連線
#
# repl-backlog-size 1mb

# 當master在一段時間內不再與任何slave連線,backlog將會釋放。以下選項配置了從最後一個
# slave斷開開始計時多少秒後,backlog緩衝將會釋放。
#
# 0表示永不釋放backlog
#
# repl-backlog-ttl 3600

# slave的優先順序是一個整數展示在Redis的Info輸出中。如果master不再正常工作了,哨兵將用它來
# 選擇一個slave提升=升為master。
#
# 優先順序數字小的salve會優先考慮提升為master,所以例如有三個slave優先順序分別為10,100,25,
# 哨兵將挑選優先順序最小數字為10的slave。
#
# 0作為一個特殊的優先順序,標識這個slave不能作為master,所以一個優先順序為0的slave永遠不會被
# 哨兵挑選提升為master
#
# 預設優先順序為100
slave-priority 100

# 如果master少於N個延時小於等於M秒的已連線slave,就可以停止接收寫操作。
#
# N個slave需要是“oneline”狀態
#
# 延時是以秒為單位,並且必須小於等於指定值,是從最後一個從slave接收到的ping(通常每秒傳送)
# 開始計數。
#
# This option does not GUARANTEES that N replicas will accept the write, but
# will limit the window of exposure for lost writes in case not enough slaves
# are available, to the specified number of seconds.
#
# 例如至少需要3個延時小於等於10秒的slave用下面的指令:
#
# min-slaves-to-write 3
# min-slaves-max-lag 10
#
# 兩者之一設定為0將禁用這個功能。
#
# 預設 min-slaves-to-write 值是0(該功能禁用)並且 min-slaves-max-lag 值是10。

################################## SECURITY ###################################

# 要求客戶端在處理任何命令時都要驗證身份和密碼。
# 這個功能在有你不信任的其它客戶端能夠訪問redis伺服器的環境裡非常有用。
#

# 為了向後相容的話這段應該註釋掉。而且大多數人不需要身份驗證(例如:它們執行在自己的伺服器上)
# 
# 警告:因為Redis太快了,所以外面的人可以嘗試每秒150k的密碼來試圖破解密碼。這意味著你需要
# 一個高強度的密碼,否則破解太容易了。
#
# requirepass foobared

# 命令重新命名
#
# 在共享環境下,可以為危險命令改變名字。比如,你可以為 CONFIG 改個其他不太容易猜到的名字,
# 這樣內部的工具仍然可以使用,而普通的客戶端將不行。
#
# 例如:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 也可以通過改名為空字串來完全禁用一個命令
#
# rename-command CONFIG ""
#
# 請注意:改變命令名字被記錄到AOF檔案或被傳送到從伺服器可能產生問題。

################################### LIMITS ####################################

# 設定最多同時連線的客戶端數量。預設這個限制是10000個客戶端,然而如果Redis伺服器不能配置
# 處理檔案的限制數來滿足指定的值,那麼最大的客戶端連線數就被設定成當前檔案限制數減32(因
# 為Redis伺服器保留了一些檔案描述符作為內部使用)
#
# 一旦達到這個限制,Redis會關閉所有新連線併發送錯誤'max number of clients reached'
#
# maxclients 10000

# 不要用比設定的上限更多的記憶體。一旦記憶體使用達到上限,Redis會根據選定的回收策略(參見:
# maxmemmory-policy)刪除key
#
# 如果因為刪除策略Redis無法刪除key,或者策略設定為 "noeviction",Redis會回覆需要更
# 多記憶體的錯誤資訊給命令。例如,SET,LPUSH等等,但是會繼續響應像Get這樣的只讀命令。
#
# 在使用Redis作為LRU快取,或者為例項設定了硬性記憶體限制的時候(使用 "noeviction" 策略)
# 的時候,這個選項通常事很有用的。
#
# 警告:當有多個slave連上達到記憶體上限的例項時,master為同步slave的輸出緩衝區所需
# 記憶體不計算在使用記憶體中。這樣當驅逐key時,就不會因網路問題 / 重新同步事件觸發驅逐key
# 的迴圈,反過來slaves的輸出緩衝區充滿了key被驅逐的DEL命令,這將觸發刪除更多的key,
# 直到這個資料庫完全被清空為止
# 
# 總之...如果你需要附加多個slave,建議你設定一個稍小maxmemory限制,這樣系統就會有空閒
# 的記憶體作為slave的輸出快取區(但是如果最大記憶體策略設定為"noeviction"的話就沒必要了)
#
# maxmemory <bytes>

# 最大記憶體策略:如果達到記憶體限制了,Redis如何選擇刪除key。你可以在下面五個行為裡選:
# 
# volatile-lru -> 根據LRU演算法生成的過期時間來刪除。
# allkeys-lru -> 根據LRU演算法刪除任何key。
# volatile-random -> 根據過期設定來隨機刪除key。 
# allkeys->random -> 無差別隨機刪。 
# volatile-ttl -> 根據最近過期時間來刪除(輔以TTL) 
# noeviction -> 誰也不刪,直接在寫操作時返回錯誤。
# 
# 注意:對所有策略來說,如果Redis找不到合適的可以刪除的key都會在寫操作時返回一個錯誤。
#

#       目前為止涉及的命令: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和最小TTL演算法的實現都不是很精確,但是很接近(為了省記憶體),所以你可以用樣本量做檢測。
# 例如:預設Redis會檢查3個key然後取最舊的那個,你可以通過下面的配置指令來設定樣本的個數。
#
# maxmemory-samples 3

############################## APPEND ONLY MODE ###############################

# 預設情況下,Redis是非同步的把資料匯出到磁碟上。這種模式在很多應用裡已經足夠好,但Redis程序
# 出問題或斷電時可能造成一段時間的寫操作丟失(這取決於配置的save指令)。
#
# AOF是一種提供了更可靠的替代持久化模式,例如使用預設的資料寫入檔案策略(參見後面的配置)
# 在遇到像伺服器斷電或單寫情況下Redis自身程序出問題但作業系統仍正常執行等突發事件時,Redis
# 能只丟失1秒的寫操作。
#
# AOF和RDB持久化能同時啟動並且不會有問題。
# 如果AOF開啟,那麼在啟動時Redis將載入AOF檔案,它更能保證資料的可靠性。
#
# 請檢視 http://redis.io/topics/persistence 來獲取更多資訊.

appendonly no

# 純累加檔名字(預設:"appendonly.aof")

appendfilename "appendonly.aof"

# fsync() 系統呼叫告訴作業系統把資料寫到磁碟上,而不是等更多的資料進入輸出緩衝區。
# 有些作業系統會真的把資料馬上刷到磁碟上;有些則會盡快去嘗試這麼做。
#
# Redis支援三種不同的模式:
#
# no:不要立刻刷,只有在作業系統需要刷的時候再刷。比較快。
# always:每次寫操作都立刻寫入到aof檔案。慢,但是最安全。
# everysec:每秒寫一次。折中方案。 
#
# 預設的 "everysec" 通常來說能在速度和資料安全性之間取得比較好的平衡。根據你的理解來
# 決定,如果你能放寬該配置為"no" 來獲取更好的效能(但如果你能忍受一些資料丟失,可以考慮使用
# 預設的快照持久化模式),或者相反,用“always”會比較慢但比everysec要更安全。
#
# 請檢視下面的文章來獲取更多的細節
# http://antirez.com/post/redis-persistence-demystified.html 
# 
# 如果不能確定,就用 "everysec"

# appendfsync always
appendfsync everysec
# appendfsync no

# 如果AOF的同步策略設定成 "always" 或者 "everysec",並且後臺的儲存程序(後臺儲存或寫入AOF
# 日誌)會產生很多磁碟I/O開銷。某些Linux的配置下會使Redis因為 fsync()系統呼叫而阻塞很久。
# 注意,目前對這個情況還沒有完美修正,甚至不同執行緒的 fsync() 會阻塞我們同步的write(2)呼叫。
#
# 為了緩解這個問題,可以用下面這個選項。它可以在 BGSAVE 或 BGREWRITEAOF 處理時阻止fsync()。
# 
# 這就意味著如果有子程序在進行儲存操作,那麼Redis就處於"不可同步"的狀態。
# 這實際上是說,在最差的情況下可能會丟掉30秒鐘的日誌資料。(預設Linux設定)
# 
# 如果把這個設定成"yes"帶來了延遲問題,就保持"no",這是儲存持久資料的最安全的方式。

no-appendfsync-on-rewrite no

# 自動重寫AOF檔案
# 如果AOF日誌檔案增大到指定百分比,Redis能夠通過 BGREWRITEAOF 自動重寫AOF日誌檔案。
# 
# 工作原理:Redis記住上次重寫時AOF檔案的大小(如果重啟後還沒有寫操作,就直接用啟動時的AOF大小)
# 
# 這個基準大小和當前大小做比較。如果當前大小超過指定比例,就會觸發重寫操作。你還需要指定被重寫
# 日誌的最小尺寸,這樣避免了達到指定百分比但尺寸仍然很小的情況還要重寫。
#
# 指定百分比為0會禁用AOF自動重寫特性。

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

################################ LUA SCRIPTING  ###############################

# Lua 指令碼的最大執行時間,毫秒為單位
#
# 如果達到了最大的執行時間,Redis將要記錄在達到最大允許時間之後一個指令碼仍然在執行,並且將
# 開始對查詢進行錯誤響應。
#
# 當一個長時間執行的指令碼超過了最大執行時間,只有 SCRIPT KILL 和 SHUTDOWN NOSAVE 兩個
# 命令可用。第一個可以用於停止一個還沒有呼叫寫命名的指令碼。第二個是關閉伺服器唯一方式,當
# 寫命令已經通過指令碼開始執行,並且使用者不想等到指令碼的自然終止。
#
# 設定成0或者負值表示不限制執行時間並且沒有任何警告
lua-time-limit 5000

################################## SLOW LOG ###################################

# Redis慢查詢日誌可以記錄超過指定時間的查詢。執行時間不包括各種I/O時間,例如:連線客戶端,
# 傳送響應資料等,而只計算命令執行的實際時間(這只是執行緒阻塞而無法同時為其他請求服務的命令執
# 行階段)
# 
# 你可以為慢查詢日誌配置兩個引數:一個指明Redis的超時時間(單位為微秒)來記錄超過這個時間的命令
# 另一個是慢查詢日誌長度。當一個新的命令被寫進日誌的時候,最老的那個記錄從佇列中移除。
#
# 下面的時間單位是微秒,所以1000000就是1秒。注意,負數時間會禁用慢查詢日誌,而0則會強制記錄
# 所有命令。
slowlog-log-slower-than 10000

# 這個長度沒有限制。只是要主要會消耗記憶體。你可以通過 SLOWLOG RESET 來回收記憶體。
slowlog-max-len 128

############################# Event notification ##############################

# Redis 能通知 Pub/Sub 客戶端關於鍵空間發生的事件
# 這個功能文件位於http://redis.io/topics/keyspace-events
#
# 例如:如果鍵空間事件通知被開啟,並且客戶端對 0 號資料庫的鍵 foo 執行 DEL 命令時,將通過
# Pub/Sub釋出兩條訊息:
# PUBLISH 
[email protected]
__:foo del # PUBLISH [email protected]__:del foo # # 可以在下表中選擇Redis要通知的事件型別。事件型別由單個字元來標識: # # K 鍵空間通知,以[email protected]<db>__為字首 # E 鍵事件通知,以[email protected]<db>__為字首 # g DEL , EXPIRE , RENAME 等型別無關的通用命令的通知, ... # $ String命令 # l List命令 # s Set命令 # h Hash命令 # z 有序集合命令 # x 過期事件(每次key過期時生成) # e 驅逐事件(當key在記憶體滿了被清除時生成) # A g$lshzxe的別名,因此”AKE”意味著所有的事件 # # notify-keyspace-events 帶一個由0到多個字元組成的字串引數。空字串意思是通知被禁用。 # # 例子:啟用List和通用事件通知: # notify-keyspace-events Elg # # 例子2:為了獲取過期key的通知訂閱名字為
[email protected]
__:expired 的頻道,用以下配置 # notify-keyspace-events Ex # # 預設所用的通知被禁用,因為使用者通常不需要該特性,並且該特性會有效能損耗。 # 注意如果你不指定至少K或E之一,不會發送任何事件。 notify-keyspace-events "" ############################### ADVANCED CONFIG ############################### # 當hash只有少量的entry時,並且最大的entry所佔空間沒有超過指定的限制時,會用一種節省記憶體的 # 資料結構來編碼。可以通過下面的指令來設定限制 hash-max-ziplist-entries 512 hash-max-ziplist-value 64 # 與hash似,資料元素較少的list,可以用另一種方式來編碼從而節省大量空間。 # 這種特殊的方式只有在符合下面限制時才可以用: list-max-ziplist-entries 512 list-max-ziplist-value 64 # set有一種特殊編碼的情況:當set資料全是十進位制64位有符號整型數字構成的字串時。 # 下面這個配置項就是用來設定set使用這種編碼來節省記憶體的最大長度。 set-max-intset-entries 512 # 與hash和list相似,有序集合也可以用一種特別的編碼方式來節省大量空間。 # 這種編碼只適合長度和元素都小於下面限制的有序集合: zset-max-ziplist-entries 128 zset-max-ziplist-value 64 # HyperLogLog sparse representation bytes limit. The limit includes the # 16 bytes header. When an HyperLogLog using the sparse representation crosses # this limit, it is converted into the dense representation. # # A value greater than 16000 is totally useless, since at that point the # dense representation is more memory efficient. # # The suggested value is ~ 3000 in order to have the benefits of # the space efficient encoding without slowing down too much PFADD, # which is O(N) with the sparse encoding. The value can be raised to # ~ 10000 when CPU is not a concern, but space is, and the data set is # composed of many HyperLogLogs with cardinality in the 0 - 15000 range. hll-sparse-max-bytes 3000 # 啟用雜湊重新整理,每100個CPU毫秒會拿出1個毫秒來重新整理Redis的主雜湊表(頂級鍵值對映表)。 # redis所用的雜湊表實現(見dict.c)採用延遲雜湊重新整理機制:你對一個雜湊表操作越多,雜湊重新整理 # 操作就越頻繁;反之,如果伺服器是空閒的,那麼雜湊重新整理就不會完成,雜湊表就會佔用更多的一些 # 記憶體而已。 # # 預設是每秒鐘進行10次雜湊表重新整理,用來重新整理字典,然後儘快釋放記憶體。 # # 建議: # 如果你對延遲比較在意,不能夠接受Redis時不時的對請求有2毫秒的延遲的話,就用 # "activerehashing no",如果不太在意延遲而希望儘快釋放記憶體就設定"activerehashing yes" activerehashing yes # 客戶端的輸出緩衝區的限制,可用於強制斷開那些因為某種原因從伺服器讀取資料的速度不夠快的客戶端, # (一個常見的原因是一個釋出/訂閱客戶端消費訊息的速度無法趕上生產它們的速度) # # 可以對三種不同的客戶端設定不同的限制: # normal -> 正常客戶端 # slave -> slave和 MONITOR 客戶端 # pubsub -> 至少訂閱了一個pubsub channel或pattern的客戶端 # # 下面是每個client-output-buffer-limit語法: # client-output-buffer-limit <class><hard limit> <soft limit> <soft seconds> # 一旦達到硬限制客戶端會立即被斷開,或者達到軟限制並持續達到指定的秒數(連續的)。 # 例如,如果硬限制為32兆位元組和軟限制為16兆位元組/10秒,客戶端將會立即斷開 # 如果輸出緩衝區的大小達到32兆位元組,或客戶端達到16兆位元組並連續超過了限制10秒,就將斷開連線。 # # 預設normal客戶端不做限制,因為他們在不主動請求時不接收資料(以推的方式),只有非同步客戶端 # 可能會出現請求資料的速度比它可以讀取的速度快的場景。 # # pubsub和slave客戶端會有一個預設值,因為訂閱者和slaves以推的方式來接收資料 # # 把硬限制和軟限制都設定為0來禁用該功能 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呼叫內部函式來執行許多後臺任務,如關閉客戶端超時的連線,清除未被請求過的過期Key等等。 # # 不是所有的任務都以相同的頻率執行,但Redis依照指定的“hz”值來執行檢查任務。 # # 預設情況下,“hz”的被設定為10。提高該值將在Redis空閒時使用更多的CPU時,但同時當有多個key # 同時到期會使Redis的反應更靈敏,以及超時可以更精確地處理。 # # 範圍是1到500之間,但是值超過100通常不是一個好主意。 # 大多數使用者應該使用10這個預設值,只有在非常低的延遲要求時有必要提高到100。 hz 10 # 當一個子程序重寫AOF檔案時,如果啟用下面的選項,則檔案每生成32M資料會被同步。為了增量式的 # 寫入硬碟並且避免大的延遲高峰這個指令是非常有用的 aof-rewrite-incremental-fsync yes