轉:Redis設定檔詳解

來源:互聯網
上載者:User

標籤:

配置與特性詳解

  1. 在redis中,合法的"尺寸單位",無大小寫區分.

  # 1k => 1000 bytes  # 1kb => 1024 bytes  # 1m => 1000000 bytes  # 1mb => 1024*1024 bytes  # 1g => 1000000000 bytes  # 1gb => 1024*1024*1024 bytes


  2.將redis是否以後台進程的方式運行,預設為"no"

  daemonize no

  如果"daemonize yes",那麼將會把進程id資訊寫入檔案中.請注意:啟動redis進程的使用者需要具有寫入此目錄的許可權.

 ##pidfile ~/redis.pid  ##指令操作:./redis.server --daemonize yes --pidfile ~/redis.pid
  pidfile /var/run/redis.pid


  3.指定server需要偵聽的用戶端串連連接埠,client與server在此連接埠進行TCP通訊.

  port 6379


  4.如果你的物理伺服器有多個網路介面,請你為將server socket綁定在指定IP上.

 # bind 127.0.0.1


  5.指定socket串連空閑時間(秒).如果connection空閑逾時,將會關閉串連(TCP socket選項)如果為0,表示永不逾時。

  timeout 0

  

  6.指定TCP串連是否為長串連,"偵探"訊號有server端維護,長串連將會額外的增加server端的開支(TCP socket選項),預設為0.表示禁用,非0值表示開啟"長串連";"偵探"訊號的發送間隔將有linux系統決定,在多次"偵探"後,如果對等端(用戶端socket)仍不回複,將會關閉串連,否則串連將會被保持開啟。client端socket也可以通過配置keepalive選項,開啟"長串連".(單位:秒)

  tcp-keepalive 0


  7.server記錄層級,合法值:debug,verbose,notice,warning 預設為notice
    debug適合開發環境,用戶端操作資訊都會輸出日誌
    verbose輸出一些相對有用的資訊,目前效果不明
    notice適合生產環境
    warning異常資訊

  loglevel notice


  8.指定redis記錄檔目錄,預設為stdout

  ##logfile ~/redislog.log  logfile stdout

  

  9.設定redis所允許的最大"db簇"的個數,預設為16個簇。用戶端可以通過"select"指令指定需要使用的"db簇"索引號,預設為0。redis的頂層資料結構中,所有K-V都潛在的包括了"db簇"索引號,任何一個key都將隸屬於一個"db"。任何對資料的檢索,只會覆蓋指定的"db";例如資料被插入到"db 10"中,那麼在"db 1"中去get,將會返回null。對資料歸類到不同的db簇中,可以協助我們實現一些特定的需求,比如根據不同用戶端串連,來指定不同的db索引號。

  databases 16


  10.持久化snapshot配置,save <seconds> <changes>,用來描述"在多少秒期間至少多少個變更操作"觸發snapshot##snapshot最終將產生新的dump.rdb檔案,save ""用來禁用snapshot功能。如下表示12小時內至少一個key變更,觸發snapshot

  save 43200 1


  11.如果snapshot過程中出現錯誤,即資料持久化失敗,是否終止所有的用戶端write請求。這個選項很讓人為難,"yes"表示終止,一旦snapshot故障,那麼此server為唯讀服務;

如果為"no",那麼此次snapshot將失敗,但下一次snapshot不會受到影響,不過如果出現故障,資料只能恢複到"最近一個成功點"。

  stop-writes-on-bgsave-error yes


  12.是否啟用rdb檔案壓縮手段,預設為yes.壓縮可能需要額外的cpu開支,不過這能夠有效減小rdb檔案的大小,有利於儲存/備份/傳輸/資料恢複。

  rdbcompression yes


  13.是否對rdb檔案使用CRC64校正和,預設為"yes",那麼每個rdb檔案內容的末尾都會追加CRC校正和。對於其他第三方校正工具,可以很方便的檢測檔案的完整性。

  rdbchecksum yes

  14.指定rdb檔案的名稱

  dbfilename dump.rdb

  

  15.指定rdb/AOF檔案的目錄位置

  dir ./


  16.將當前server做為slave,並為其指定master資訊.

  slaveof <masterip> <masterport>

  

  17.當前server的授權密碼,任何用戶端或者slave與此server互動前,需要提交密碼,其他server的masterauth配置和此參數值保持一致,密碼應該足夠複雜(64位元組)

  requirepass <foobared>


  18.以認證的方式串連到master.如果master中使用了"密碼保護",slave必須交付正確的授權密碼,才能串連成功, "requirepas"配置項指定了當前server的密碼。此配置項中<master-password>值需要和master機器的"requirepas"保持一致。此參數配置在slave端。

  masterauth <master-password>


  19.如果當前server是slave,那麼當slave與master失去通訊時,是否繼續為用戶端提供服務,"yes"表示繼續,"no"表示終止。##在"yes"情況下,slave繼續向用戶端提供唯讀服務,有可能此時的資料已經到期.##在"no"情況下,任何向此server發送的資料請求服務(包括用戶端和此server的slave)都將被告知"error"。

  slave-serve-stale-data yes


  20.slave是否為"唯讀",強烈建議為"yes。

  slave-read-only yes


  21.slave向指定的master發送ping訊息的時間間隔(秒),預設為10。

  repl-ping-slave-period 10


  22.slave與master通訊中,最大空閑時間,預設60秒.逾時將導致串連關閉.

 repl-timeout 60


  23.slave與master的串連,是否禁用TCP nodelay選項。"yes"表示禁用,那麼socket通訊中資料將會以packet方式發送(packet大小受到socket buffer限制), 可以提高socket通訊的效率(tcp互動次數),但是小資料將會被buffer,不會被立即發送,對於接受者可能存在延遲。"no"表示開啟tcp nodelay選項,任何資料都會被立即發送,及時性較好,但是效率較低##建議為"no"。

  repl-disable-tcp-nodelay no


  24.適用Sentinel模組(unstable,M-S叢集管理和監控),需要額外的設定檔支援。slave的權重值,預設100.當master失效後,Sentinel將會從slave列表中找到權重值最低(>0)的slave,並提升為master,如果權重值為0,表示此slave為"觀察者",不參與master選舉。

 slave-priority 100

  
  25.重新命名指令,對於一些與"server"控制有關的指令,可能不希望遠程用戶端(非管理使用者)連結隨意使用,##那麼就可以把這些指令重新命名為"難以閱讀"的其他字串。
例如"slaveof"   "CONFIG"   "BGREWRITEAOF"   "BGREWRITE"   "FLUSHALL"等指令需要被限制訪問。

##配置項格式: rename-command <command> <newCommand> rename-command CONFIG 3ed984507a5dcd722aeade310065ce5d    (方式:MD5(‘CONFIG^!‘))


  26.所允許的用戶端串連數,預設為10000。此值不可能被設定成過大,因為每個socket串連都會以"檔案描述符"的方式被系統開啟,它受到系統"檔案開啟個數"的限制,如果超過此值,server將會拒絕串連。

  maxclients 10000


  27.redis-cache所能使用的最大記憶體(bytes),預設為0,表示"無限制",最終由OS實體記憶體大小決定(如果實體記憶體不足,有可能會使用swap)。如果此值設定過小(比如32位元組),將直接導致server無法使用。此值盡量不要超過機器的實體記憶體尺寸,從效能和實施的角度考慮,可以為實體記憶體3/4。此配置需要和"maxmemory-policy"配合使用,當redis中記憶體資料達到maxmemory時,觸發"清除策略"。如果使用"清除策略"後,仍無法得到足夠的記憶體來儲存新的資料,那麼write操作的用戶端將會收到"error OOM.."資訊,此時server唯讀。在"記憶體不足"時,任何write操作(比如set,lpush等)都會觸發"清除策略"的執行。在實際環境中,建議redis的所有物理機器的硬體設定保持一致(記憶體一致),同時確保master/slave中"maxmemory""policy"配置一致。

  maxmemory <bytes>



##"記憶體不足"時,資料清除策略,預設為"volatile-lru"
## volatile-lru    ->對"到期集合"中的資料採取LRU(近期最少使用)演算法.如果對key使用"expire"指令指定了到期時間,那麼此key將會被添加到"到期集合"中.
## 將已經到期/LRU的資料優先移除.如果"到期集合"中全部移除仍不能滿足記憶體需求,將OOM.
## allkeys-lru ->對所有的資料,採用LRU演算法
## volatile-random ->對"到期集合"中的資料採取"隨即選取"演算法,並移除選中的K-V,直到"記憶體足夠"為止.
## 如果如果"到期集合"中全部移除全部移除仍不能滿足,將OOM
## allkeys-random ->對所有的資料,採取"隨即選取"演算法,並移除選中的K-V,直到"記憶體足夠"為止.
## volatile-ttl ->對"到期集合"中的資料採取TTL演算法(最小存活時間),移除即將到期的資料.
## noeviction ->不做任何幹擾操作,直接返回OOM異常.
###
##如果資料的到期不會對"應用系統"帶來異常,且系統中write操作比較密集,建議採取"allkeys-lru"
maxmemory-policy volatile-lru


##是否開啟aof功能,"yes"表示開啟,在開啟情況下,aof檔案同步功能才生效,預設為"no"
##對master機器,建議使用AOF,對於slave,建議關閉(採用snapshot),
appendonly no


##aof中檔案同步機制
## always ->任何一個aof記錄都立即進行檔案同步(磁碟寫入),安全性最高;如果write請求比較密集,將會造成較高的磁碟IO開支和響應延遲
## everysec ->每秒同步一次,效能和安全性都較高的策略,也是預設值
## no ->不直接同步處理,讓檔案同步交給OS控制,OS將會根據檔案流通道中buffer情況/空閑情況進行擇機寫入磁碟.安全性和效率與OS設定有關.
appendfsync everysec

##在aof rewrite期間,是否對aof新記錄的append暫緩使用檔案同步策略,主要考慮磁碟IO開支和請求阻塞時間.
##預設為no,表示"不暫緩",新的aof記錄仍然會被立即同步
##
no-appendfsync-on-rewrite no

##aof rewrite觸發時機,最小檔案尺寸
auto-aof-rewrite-min-size 64mb


##aof每次rewrite之後,都會記住當前aof檔案的大小,當檔案增長到一定比例後,繼續進行aof rewrite
auto-aof-rewrite-percentage 100

##aof rewrite過程中,是否採取增量"檔案同步"策略,預設為"yes",而且必須為yes.
##rewrite過程中,每32M資料進行一次檔案同步,這樣可以減少"aof大檔案"寫入對磁碟的操作次數.
aof-rewrite-incremental-fsync yes

##lua指令碼啟動並執行最大時間
lua-time-limit 5000

##"慢動作記錄"記錄,單位:微秒(百萬分之一秒,1000 * 1000),如果操作時間超過此值,將會把command資訊"記錄"起來.(記憶體,非檔案)
##其中"操作時間"不包括網路IO開支,只包括請求達到server後進行"記憶體實施"的時間."0"表示記錄全部操作.
slowlog-log-slower-than 10000
##"慢動作記錄"保留的最大條數,"記錄"將會被隊列化,如果超過了此長度,舊記錄將會被移除.
##可以通過"SLOWLOG <subcommand> args"查看慢記錄的資訊(SLOWLOG get 10,SLOWLOG reset)
##通過"SLOWLOG get num"指令可以查看最近num條慢速記錄,其中包括"記錄"操作的時間/指令/K-V等資訊
slowlog-max-len 128

##通過"TYPE key"指令查看key的資料類型
##通過"OBJECT encoding key"查看key的編碼類別型
##hash類型的資料結構在編碼上可以使用ziplist和hashtable

##ziplist的特點就是檔案儲存體(以及記憶體儲存)所需的空間較小,在內容較小時,效能和hashtable幾乎一樣.因此redis對hash類型預設採取ziplist.

##如果hash中條目的條目個數或者value長度達到閥值,將會被重構為hashtable.
##ziplist中允許儲存的最大條目個數,建議為128
hash-max-ziplist-entries 512
##ziplist中允許條目value值最大位元組數,建議為1024
hash-max-ziplist-value 64

##對於list類型,將會採取ziplist,linkedlist兩種編碼類別型.
##同hash.
list-max-ziplist-entries 512
list-max-ziplist-value 64


##zset為有序集合,有2中編碼類別型:ziplist,skiplist

##因為"排序"將會消耗額外的效能,當zset中資料較多時,將會被重構為skiplist.
##同hash.
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

##intset中允許儲存的最大條目個數,如果達到閥值,intset將會被重構為hashtable
set-max-intset-entries 512


##是否開啟頂層資料結構的rehash功能,如果記憶體允許,請開啟.
##rehash能夠很大程度上提高K-V存取的效率.
activerehashing yes

##用戶端buffer控制

##在用戶端與server進行的互動中,每個串連都會與一個buffer關聯,此buffer用來隊列化亟待被client接受的響應資訊.
##如果client不能及時的消費響應資訊,那麼buffer將會被不斷積壓而給server帶來記憶體壓力.如果buffer中積壓的資料達到閥值,將會
##導致串連被關閉,buffer被移除."
##buffer控制類型包括:
## normal -> 普通串連
## slave ->與slave之間的串連
## pubsub ->pub/sub類型串連,此類型的串連,往往會產生此種問題;因為pub端會密集的發布訊息,但是sub端可能消費不足.
##指令格式:client-output-buffer-limit <class> <hard> <soft> <seconds>",其中hard表示buffer最大值,一旦達到閥值將立即關閉串連;
##soft表示"容忍值",它和seconds配合,如果buffer值超過soft且期間達到了seconds,也將立即關閉串連,如果超過了soft但是在seconds之後
##buffer資料小於了soft,串連將會被保留.
# 其中hard和soft都設定為0,則表示禁用buffer控制.通常hard值大於soft.
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 server執行背景工作的頻率,預設為10,此值越大表示redis對"間歇性task"的執行次數越頻繁(次數/秒)
##"間歇性task"包括"到期集合"檢測、關閉"空閑逾時"的串連等,此值必須大於0且小於500.(參見redis.h源碼)

##此值過小就意味著更多的cpu周期消耗,後台task被輪詢的次數更頻繁

##此值過大意味著"記憶體敏感"性較差.
##建議保持預設值
hz 10

##include指令用來載入額外的設定檔範本,也可以在redis server啟動時,手動指定需要include的設定檔.
include /path/to/local.conf
# include /path/to/other.conf

文章轉自:http://leonmau.iteye.com/blog/1395690

轉:Redis設定檔詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.