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 (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的延遲將會減少但要使用更多的帶寬
#