Redis設定檔詳解,針對2.6.3--2.6.7,redis2.6.3--2.6.7
Redis設定檔詳解,針對2.6.3--2.6.7
# 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.
# Redis預設是不作為守護進程來啟動並執行。你可以把這個設定為"yes"讓它作為守護進程來運行。
# 注意,當作為守護進程的時候,Redis會把進程ID寫到 /var/run/redis.pid
daemonize yes
# 當以守護進程方式啟動並執行時候,Redis會把進程ID預設寫到 /var/run/redis.pid。你可以在這裡修改路徑。
pidfile /var/run/redis.pid
# 接受串連的特定連接埠,預設是6379。
# 如果連接埠設定為0,Redis就不會監聽TCP通訊端
port 6379
# 如果連接埠設定為0,Redis就不會監聽TCP通訊端
port 6379
# 如果你想的話,你可以綁定單一介面;如果這裡沒單獨設定,那麼所有介面的串連都會被監聽。
#
# bind 127.0.0.1
# 指定用來監聽串連的unxi通訊端的路徑。這個沒有預設值,所以如果你不指定的話,Redis就不會通過unix通訊端
# unixsocket /tmp/redis.sock
# unixsocketperm 755
#一個用戶端空閑多少秒後關閉串連。(0代表禁用,永不關閉)
timeout 0
# 設定伺服器調試等級。
# debug (很多資訊,對開發/測試有用)
# verbose (很多精簡的有用資訊,但是不像debug等級那麼多)
# notice (適量的資訊,基本上是你生產環境中需要的程度)
# warning (只有很重要/嚴重的資訊會記錄下來)
loglevel notice
# 指明記錄檔名。也可以使用"stdout"來強制讓Redis把日誌資訊寫到標準輸出上。
# 注意:如果Redis以守護進程方式運行,而你設定日誌顯示到標準輸出的話,那麼日誌會發送到 /dev/null
logfile stdout
# 要使用系統日誌記錄器很簡單,只要設定 "syslog-enabled" 為 "yes" 就可以了。
# 然後根據需要設定其他一些syslog參數就可以了。
# syslog-enabled no
# 指明syslog身份
# syslog-ident redis
# 指明syslog的裝置。必須是一個使用者或者是 LOCAL0 ~ LOCAL7 之一。
# syslog-facility local0
#設定資料庫個數。預設資料庫是 DB 0,你可以通過SELECT <dbid> WHERE dbid(0~'databases' - 1)來為每個連結選擇伺服器
databases 16
################################ 快照 ########################
# 把資料庫存到磁碟上:
# save <seconds> <changes>
#
# 會在指定秒數和資料變化次數之後把資料庫寫到磁碟上。
#
# 下面的例子將會進行把資料寫入磁碟的操作:
# 900秒(15分鐘)之後,且至少1次變更
# 300秒(5分鐘)之後,且至少10次變更
# 60秒之後,且至少10000次變更
#
# 注意:你要想不寫磁碟的話就把所有 "save" 設定注釋掉就行了。
#save 900 1
save 300 30
#save 60 10000
#後台儲存錯誤停止寫。
stop-writes-on-bgsave-error yes
# 當匯出到 .rdb 資料庫時是否用LZF壓縮字串對象。
# 預設設定為 "yes",所以幾乎總是生效的。
# 如果你想節省CPU的話你可以把這個設定為 "no",但是如果你有可壓縮的key的話,那資料檔案就會更大了。
rdbcompression yes
# Since verison 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檔案時校正。
rdbchecksum yes
# 資料庫的檔案名稱
dbfilename dump.rdb
# 工作目錄
# 資料庫會寫到這個目錄下,檔案名稱就是上面的 "dbfilename" 的值。
# 累加檔案也放這裡。
# 注意你這裡指定的必須是目錄,不是檔案名稱。
dir ./
################################# 同步 #################################
#
# 主從同步。通過 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
#如果為yes,slave執行個體唯讀,如果為no,slave執行個體可讀可寫。
slave-read-only yes
# slave根據指定的時間間隔向伺服器發送ping請求。
# 時間間隔可以通過 repl_ping_slave_period 來設定。
# 預設10秒。
#
# repl-ping-slave-period 10
# 下面的選項設定了大塊資料I/O、向master請求資料和ping響應的到期時間。
# 預設值60秒。
#
# 一個很重要的事情是:確保這個值比 repl-ping-slave-period 大,否則master和slave之間的傳輸到期時間比預想的要短。
# repl-timeout 60
#如果master不能再正常工作,那麼會在多個slave中,選擇優先值最小的一個slave提升為master,優先值為0表示不能提升為master。
slave-priority 100
################################## 安全 ###################################
# 要求用戶端在處理任何命令時都要驗證身份和密碼。
# 這在你信不過來訪者時很有用。
#
# 為了向後相容的話,這段應該注釋掉。而且大多數人不需要身分識別驗證(例如:它們運行在自己的伺服器上。)
#
# 警告:因為Redis太快了,所以居心不良的人可以每秒嘗試150k的密碼來試圖破解密碼。
# 這意味著你需要一個高強度的密碼,否則破解太容易了。
#
# requirepass foobared
# 命令重新命名
#
# 在共用環境下,可以為危險命令改變名字。比如,你可以為 CONFIG 改個其他不太容易猜到的名字,這樣你自己仍然可以使用,而別人卻沒法做壞事了。
#
# 例如:
#
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
#
# 甚至也可以通過給命令賦值一個Null 字元串來完全禁用這條命令:
#
# rename-command CONFIG ""
################################### 限制 ####################################
#
# 設定最多同時串連用戶端數量。
# 預設沒有限制,這個關係到Redis進程能夠開啟的檔案描述符數量。
# 特殊值"0"表示沒有限制。
# 一旦達到這個限制,Redis會關閉所有新串連並發送錯誤"達到最大使用者數上限(max number of clients reached)"
#
# maxclients 128
# 不要用比設定的上限更多的記憶體。一旦記憶體使用量達到上限,Redis會根據選定的回收策略(參見:maxmemmory-policy)刪除key。
#
# 如果因為刪除策略問題Redis無法刪除key,或者原則設定為 "noeviction",Redis會回複需要更多記憶體的錯誤資訊給命令。
# 例如,SET,LPUSH等等。但是會繼續合理響應唯讀命令,比如:GET。
#
# 在使用Redis作為LRU緩衝,或者為執行個體設定了硬性記憶體限制的時候(使用 "noeviction" 策略)的時候,這個選項還是滿有用的。
#
# 警告:當一堆slave連上達到記憶體上限的執行個體的時候,響應slave需要的輸出緩衝所需記憶體不計算在使用記憶體當中。
# 這樣當請求一個刪除掉的key的時候就不會觸發網路問題/重新同步的事件,然後slave就會收到一堆刪除指令,直到資料庫空了為止。
#
# 簡而言之,如果你有slave連上一個master的話,那建議你把master記憶體限制設小點兒,確保有足夠的系統記憶體用作輸出緩衝。
# (如果原則設定為"noeviction"的話就不無所謂了)
#
# maxmemory <bytes>
# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd
# 記憶體策略:如果達到記憶體限制了,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會檢查三個key然後取最舊的那個,你可以通過下面的配置項來設定樣本的個數。
#
# maxmemory-samples 3
############################## 純累加模式 ###############################
# 預設情況下,Redis是非同步把資料匯出到磁碟上。這種情況下,當Redis掛掉的時候,最新的資料就丟了。
# 如果不希望丟掉任何一條資料的話就該用純累加模式:一旦開啟這個模式,Redis會把每次寫入的資料在接收後都寫入 appendonly.aof 檔案。
# 每次啟動時Redis都會把這個檔案的資料讀入記憶體裡。
#
# 注意,非同步匯出的資料庫檔案和純累加檔案可以並存(你得把上面所有"save"設定都注釋掉,關掉匯出機制)。
# 如果純累加模式開啟了,那麼Redis會在啟動時載入記錄檔而忽略匯出的 dump.rdb 檔案。
#
# 重要:查看 BGREWRITEAOF 來瞭解當累加記錄檔太大了之後,怎麼在後台重新處理這個記錄檔。
appendonly no
# 純累加檔案名稱字(預設:"appendonly.aof")
# appendfilename appendonly.aof