redis配置詳解

關於redis配置,詳細解釋如下:

# 配置大小單位,開頭定義了一些基本的度量單位,只支持bytes,不支持bit  對大小寫不敏感
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes

################################## INCLUDES ###################################
# 引入其他文件
# include /path/to/local.conf
# include /path/to/other.conf

################################## NETWORK #####################################
# 綁定Ip   指定可以連接本實例Redis的ip  如果註釋(刪掉)則任意IP都可以連接
bind 127.0.0.1

#禁止外網訪問redis,如果啓用了,即使註釋掉了bind 127.0.0.1,再訪問redisd時候還是無法連接的
#它啓用的條件有兩個,第一是沒有使用bind,第二是沒有設置訪問密碼。
protected-mode yes

#指定Redis的端口
port 6379

# 此參數確定了TCP連接中已完成隊列(完成三次握手之後)的長度, 
# 當然此值必須不大於Linux系統定義的/proc/sys/net/core/somaxconn值,默認是511,
# 而Linux的默認參數值是128。當系統併發量大並且客戶端速度緩慢的時候,可以將這二個參數一起參考設定。
# 在高併發環境下你需要一個高backlog值來避免慢客戶端連接問題
tcp-backlog 511

# Close the connection after a client is idle for N seconds (0 to disable)
# 當客戶端閒置多長時間後關閉連接,如果指定爲0,表示關閉該功能
timeout 0

# 設置多長時間檢測死連接 單位爲秒,如果設置爲0,則不會進行Keepalive檢測
tcp-keepalive 300

################################# GENERAL #####################################
# 是否以守護進程啓動
daemonize no

#可以通過upstart和systemd管理Redis守護進程,這個參數是和具體的操作系統相關的。
supervised no

#當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定
pidfile /var/run/redis_6379.pid

#設置日誌的級別  debug、verbose、notice、warning,默認爲verbose
loglevel notice

#日誌文件的位置,當指定爲空字符串時,爲標準輸出,如果redis已守護進程模式運行,那麼日誌將會輸出到  /dev/null 。
logfile ""

# 設置數據庫的數目。默認的數據庫是DB 0 ,可以在每個連接上使用select  <dbid> 命令選擇一個不同的數據庫,dbid是一個介於0到databases - 1 之間的數值。
databases 16

################################ SNAPSHOTTING  ################################
# 指定在多長時間內,有多少次更新操作,就將數據同步到數據文件,可以多個條件配合
# 這裏表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改
# 如果想禁用RDB持久化的策略,只要不設置任何save指令,或者給save傳入一個空字符串參數也可以
#由於rdb持久化是需要fork子進程去進行備份操作,非常消耗資源,一般生產使用不會設置太高的頻率
#一般只留第一個 save 900 1配置即可
save 900 1
save 300 10
save 60  1

# 默認情況下,如果 redis 最後一次的後臺保存失敗,redis 將停止接受寫操作,這樣以一種強硬的方式讓用戶知道數據不能正確的持久化到磁盤, 
# 否則就會沒人注意到災難的發生。 如果後臺保存進程重新啓動工作了,redis 也將自動的允許寫操作。
# 如果配置成no,表示你不在乎數據不一致或者有其他的手段發現和控制
stop-writes-on-bgsave-error yes

# 對於存儲到磁盤中的快照(rdb),可以設置是否進行壓縮存儲。如果是的話,redis會採用
# LZF算法進行壓縮。如果你不想消耗CPU來進行壓縮的話,可以設置爲關閉此功能
rdbcompression yes

# 在存儲快照後,還可以讓redis使用CRC64算法來進行數據校驗,但是這樣做會增加大約
# 10%的性能消耗,如果希望獲取到最大的性能提升,可以關閉此功能
rdbchecksum yes

#rdb文件的名字。
dbfilename dump.rdb

# dbfilename文件存放目錄。必須是一個目錄,aof文件也會保存到該目錄下。
dir ./
################################# REPLICATION #################################
#設置當本機爲slave服務時,設置master服務的IP地址及端口,在Redis啓動時,它會自動從master進行數據同步
# replicaof <masterip> <masterport>

#當master服務設置了密碼保護時,slave服務連接master的密碼
# masterauth <master-password>

#當一個slave與master失去聯繫時,或者複製正在進行的時候,slave應對請求的行爲: 
#如果爲 yes(默認值) ,slave 仍然會應答客戶端請求,但返回的數據可能是過時,或者數據可能是空的在第一次同步的時候
#如果爲 no ,在你執行除了 info 和 salveof 之外的其他命令時,slave 都將返回一個 "SYNC with master in progress" 的錯誤。
replica-serve-stale-data yes

#設置slave是否是隻讀的。從2.6版起,slave默認是隻讀的。
replica-read-only yes

# 主從數據複製是否使用無硬盤複製功能。
repl-diskless-sync no

# 指定slave定期ping master的週期,默認10秒鐘。
# repl-ping-replica-period 10

#設置主庫批量數據傳輸時間或者ping回覆時間間隔,默認值是60秒 。
# repl-timeout 60

#指定向slave同步數據時,是否禁用socket的NO_DELAY選項。
#若配置爲“yes”,則禁用NO_DELAY,則TCP協議棧會合並小包統一發送,這樣可以減少主從節點間的包數量並節省帶寬,但會增加數據同步到 slave的時間。
#若配置爲“no”,表明啓用NO_DELAY,則TCP協議棧不會延遲小包的發送時機,這樣數據同步的延時會減少,但需要更大的帶寬。 
#通常情況下,應該配置爲no以降低同步延時,但在主從節點間網絡負載已經很高的情況下,可以配置爲yes。
repl-disable-tcp-nodelay no

# 設置主從複製backlog容量大小。這個 backlog 是一個用來在 slaves 被斷開連接時存放 slave 數據的 buffer,
# 所以當一個 slave 想要重新連接,通常不希望全部重新同步,只是部分同步就夠了,僅僅傳遞 slave 在斷開連接時丟失的這部分數據。
# 這個值越大,salve 可以斷開連接的時間就越長。
# repl-backlog-size 1mb

#配置當master和slave失去聯繫多少秒之後,清空backlog釋放空間。當配置成0時,表示永遠不清空。
# repl-backlog-ttl 3600

#當 master 不能正常工作的時候,Redis Sentinel 會從 slaves 中選出一個新的 master,這個值越小,就越會被優先選中,但是如果是 0 , 那是意味着這個 slave 不可能被選中。 默認優先級爲 100。
replica-priority 100

################################## SECURITY ###################################
# 設置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH <password>命令提供密碼,默認關閉
# requirepass foobared

################################### CLIENTS ####################################
#設置同一時間最大客戶端連接數,Redis可以同時打開的客戶端連接數爲Redis進程可以打開的最大文件描述符數,
#如果設置 maxclients 0,表示不作限制。當客戶端連接數到達限制時,Redis會關閉新的連接並向客戶端返回max number of clients reached錯誤信息
# maxclients 10000

############################## MEMORY MANAGEMENT ################################
# output buffers (but this is not needed if the policy is 'noeviction').
# 指定Redis最大內存限制,Redis在啓動時會把數據加載到內存中,達到最大內存後,Redis會先嚐試清除已到期或即將到期的Key,
# 當此方法處理後,仍然到達最大內存設置,將無法再進行寫入操作,但仍然可以進行讀取操作。
# Redis新的vm機制,會把Key存放內存,Value會存放在swap區
# maxmemory <bytes>

# The default is:
#當內存使用達到最大值時,redis使用的清除策略。有以下幾種可以選擇(明明有6種,官方配置文件裏卻說有5種可以選擇?):
# 1)volatile-lru   利用LRU算法移除設置過過期時間的key (LRU:最近使用 Least Recently Used ) 
# 2)allkeys-lru   利用LRU算法移除任何key 
# 3)volatile-random 移除設置過過期時間的隨機key 
# 4)allkeys-random  移除隨機key 
# 5)volatile-ttl   移除即將過期的key(minor TTL) 
# 6)noeviction  不移除任何key,只是返回一個寫錯誤 。默認選項
# maxmemory-policy noeviction

# LRU 和 minimal TTL 算法都不是精準的算法,但是相對精確的算法(爲了節省內存),隨意你可以選擇樣本大小進行檢測。redis默認選擇5個樣本進行檢測,你可以通過maxmemory-samples進行設置樣本數。
# maxmemory-samples 5

############################## APPEND ONLY MODE ###############################
# Please check http://redis.io/topics/persistence for more information.
# 是否啓用aof持久化方式 。否在每次更新操作後進行日誌記錄,Redis在默認情況下是異步的把數據寫入磁盤,如果不開啓,可能會在斷電時導致一段時間內的數據丟失。
# 因爲 redis本身同步數據文件是按上面save條件來同步的,所以有的數據會在一段時間內只存在於內存中。默認爲no
appendonly no

# The name of the append only file (default: "appendonly.aof")
# 指定更新日誌(aof)文件名,默認爲appendonly.aof
appendfilename "appendonly.aof"

# More details please check the following article:
# http://antirez.com/post/redis-persistence-demystified.html
#
# If unsure, use "everysec".
#指定更新日誌條件,共有3個可選值: 
#  no:表示等操作系統進行數據緩存同步到磁盤(快,持久化沒保證) 
#  always:同步持久化,每次發生數據變更時,立即記錄到磁盤(慢,安全) 
#  everysec:表示每秒同步一次(默認值,很快,但可能會丟失一秒以內的數據)
# appendfsync always
appendfsync everysec
# appendfsync no

# 指定是否在後臺aof文件rewrite期間調用fsync,默認爲no,表示要調用fsync(無論後臺是否有子進程在刷盤)。
# Redis在後臺寫RDB文件或重寫AOF文件期間會存在大量磁盤IO,此時,在某些linux系統中,調用fsync可能會阻塞。
#如果應用系統無法忍受延遲,而可以容忍少量的數據丟失,則設置爲yes。如果應用系統無法忍受數據丟失,則設置爲no。
no-appendfsync-on-rewrite no

# Specify a percentage of zero in order to disable the automatic AOF
# rewrite feature.
#當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日誌文件進行重寫 。當AOF文件大小的增長率大於該配置項時自動開啓重寫。
auto-aof-rewrite-percentage 100
#當AOF文件增長到一定大小的時候Redis能夠調用 BGREWRITEAOF 對日誌文件進行重寫 。當AOF文件大小大於該配置項時自動開啓重寫
auto-aof-rewrite-min-size 64mb

#redis在啓動時可以加載被截斷的AOF文件,而不需要先執行redis-check-aof 工具。
aof-load-truncated yes

#是否開啓混合持久化
aof-use-rdb-preamble yes

################################ LUA SCRIPTING  ###############################
#一個Lua腳本最長的執行時間,單位爲毫秒,如果爲0或負數表示無限執行時間
lua-time-limit 5000

################################ REDIS CLUSTER  ###############################
# 是否開啓cluster集羣模式 如果配置yes則開啓集羣功能,此redis實例作爲集羣的一個節點,否則,它是一個普通的單一的redis實例。
# cluster-enabled yes

#雖然此配置的名字叫"集羣配置文件",但是此配置文件不能人工編輯,它是集羣節點自動維護的文件,
#主要用於記錄集羣中有哪些節點、他們的狀態以及一些持久化參數等,方便在重啓時恢復這些狀態。通常是在收到請求之後這個文件就會被更新。
# cluster-config-file nodes-6379.conf

#這是集羣中的節點能夠失聯的最大時間,超過這個時間,該節點就會被認爲故障。如果主節點超過這個時間還是不可達,則用它的從節點將啓動故障遷移,升級成主節點。
# cluster-node-timeout 15000

#如果設置成0,則無論從節點與主節點失聯多久,從節點都會嘗試升級成主節點。
#如果設置成正數,則cluster-node-timeout乘以cluster-slave-validity-factor得到的時間,是從節點與主節點失聯後,
#此從節點數據有效的最長時間,超過這個時間,從節點不會啓動故障遷移。
#假設cluster-node-timeout=5,cluster-slave-validity-factor=10,則如果從節點跟主節點失聯超過50秒,此從節點不能成爲主節點。
#注意,如果此參數配置爲非0,將可能出現由於某主節點失聯卻沒有從節點能頂上的情況,從而導致集羣不能正常工作,
#在這種情況下,只有等到原來的主節點重新迴歸到集羣,集羣才恢復運作。
# cluster-replica-validity-factor 10

#master的slave數量大於該值,slave才能遷移到其他孤立master上,如這個參數若被設爲2,那麼只有當一個主節點擁有2 個可工作的從節點時,它的一個從節點會嘗試遷移。
#不建議設置爲0
#想禁用可以設置一個非常大的值
#如果小於0則啓動失敗
# cluster-migration-barrier 1

# 表示當負責一個插槽的主庫下線且沒有相應的從庫進行故障恢復時,是否整個集羣不可用?
# cluster-require-full-coverage yes

常見配置及中文註釋如上,可收藏當做工具使用!

發佈了47 篇原創文章 · 獲贊 97 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章