參考:Redis入門基礎內容(轉載整理非原創)html
# 注意單位: 當須要配置內存大小時, 可能須要指定像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 #############################node
# 能夠在這裏包含一個或多個其餘的配置文件。若是你有一個適用於全部Redis服務器的標準配置模板 # 但也須要一些每一個服務器自定義的設置,這個功能將頗有用。被包含的配置文件也能夠包含其餘配置文件, # 因此須要謹慎的使用這個功能。 # # 注意「inclue」選項不能被admin或Redis哨兵的"CONFIG REWRITE"命令重寫。 # 由於Redis老是使用最後解析的配置行最爲配置指令的值, 你最好在這個文件的開頭配置includes來 # 避免它在運行時重寫配置。 # 若是相反你想用includes的配置覆蓋原來的配置,你最好在該文件的最後使用include # # include /path/to/local.conf # include /path/to/other.conf ################################
GENERAL ##############################redis
# 默認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 (0 <= dbid <= 'databases' - 1 )來爲每一個鏈接使用不一樣的數據庫。 databases 16 ################################
SNAPSHOTTING ##########################算法
# # 把數據庫存到磁盤上: # # save # # 會在指定秒數和數據變化次數以後把數據庫寫到磁盤上。 # # 下面的例子將會進行把數據寫入磁盤的操做: # 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 # 若是master設置了密碼保護(經過 "requirepass" 選項來配置),那麼slave在開始同步以前必須 # 進行身份驗證,不然它的同步請求會被拒絕。 # # masterauth # 當一個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 # 最大內存策略:若是達到內存限制了,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 __keyspace@0__:foo del # PUBLISH __keyevent@0__:del foo # # 能夠在下表中選擇Redis要通知的事件類型。事件類型由單個字符來標識: # # K 鍵空間通知,以__keyspace@__爲前綴 # E 鍵事件通知,以__keysevent@__爲前綴 # 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的通知訂閱名字爲 __keyevent@__: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 # 一旦達到硬限制客戶端會當即被斷開,或者達到軟限制並持續達到指定的秒數(連續的)。 # 例如,若是硬限制爲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 ###############################