1. 程式人生 > >redis3.0配置調優

redis3.0配置調優

導讀:

a) 此文針對使用過redis或者正要使用redis的讀者

b) redis單例項部署忽略主從複製和叢集部分

b) 需要注意sentinel的配置不適用此版本

################################ GENERAL(常規) #####################################

a) daemonize no
   建議啟用守護模式模式:daemonize yes
b) pidfile /var/run/redis.pid
   根據port指定守護程序的pid檔案路徑:pidfile /var/run/redis-6379.pid
c) port 6379
   指定埠:port 6379
d) bind
   預設啟動ipv4和ipv6,如需禁用ipv6:bind 0.0.0.0
e) timeout 0
   N秒後關閉空閒的client連線,建議設定為120秒,不維護不活躍連線:timeout 120
f) tcp-keepalive 0
   心跳檢測時間,建議60秒:tcp-keepalive 60
g) logfile ""
   根據port指定全路徑檔名:logfile "/xxx/6379.log" 


################################ SNAPSHOTTING(rdb)  ################################

a) save 900 1
   save 300 10
   save 60 10000
   BGSAVE會佔用額外記憶體,單機多例項的環境建議禁用自動BGSAVE,減少記憶體無序不可控:save ""
b) dbfilename dump.rdb
   根據port指定rdb檔名:dbfilename dump-6379.rdb
c) dir ./
   指定工作目錄,儲存rdb檔案和aof檔案:dir /xxx/xxx/


################################# REPLICATION(主從複製) #################################
a) # slaveof <masterip> <masterport>
   預設禁用主從模式
b) masterauth <master-password>

   如果master設定了密碼,slave也需要配置

c) repl-timeout 60

   複製超時,預設60s,如果記憶體分配比較多(比如單例項4GB),建議調到3分鐘

d) repl-backlog-size 1mb
   建議調整至128mb,或者根據實際寫入壓力調整,減少slave掉線全量複製的情況發生。


################################## SECURITY(安全) ###################################

a) # requirepass foobared
   密碼,預設不啟動,同時需要注意密碼的強壯性
b) rename-command
   建議把一些重要的命令rename,防止誤操作


################################### LIMITS(限制) ####################################

a) maxclients 10000
   按需調整,預設最大客戶端1w
b) maxmemory
   最大記憶體數,預設無限制,單例項不建議超過4G
c) maxmemory-policy noeviction
   建議配置記憶體回收策略,否則記憶體寫滿了將導致寫入失敗:maxmemory-policy volatile-lru


############################## APPEND ONLY MODE(aof) ###############################
a) appendonly no
   建議開啟aof,資料安全性更高:appendonly yes
b) appendfsync everysec
   預設選擇everysec同步策略
c) no-appendfsync-on-rewrite no
   建議設定為yes,主程序執行BGSAVE或者BGREWRITEAOF時,會暫停呼叫fsync(),
   減少磁碟I/O壓力:no-appendfsync-on-rewrite yes


################################ REDIS CLUSTER(叢集)  ###############################
a) # cluster-enabled yes
   預設不啟動叢集功能,如需成為叢集的節點:cluster-enabled yes
   注意主從節點都需要開啟
b) # cluster-config-file nodes-6379.conf
   根據port指定檔名,不能出現衝突:cluster-config-file nodes-6379.conf
c) # cluster-node-timeout 15000
   節點超時時間預設15秒,根據線上環境進行調整,不建議比15秒小
d) cluster-require-full-coverage yes

   建議設定為no,部分node掛掉依然支援讀寫服務:cluster-require-full-coverage no

End