標籤:redis 配置 辛星
Redis中的主要配置項如下:
(1)daemonize yes 它表示是否在後台運行,如果寫成yes,那麼在後台運行,如果是no,則表示不在後台運行。
(2)pidfile /var/run/redis.pid 當Redis在後台啟動並執行時候,Redis預設會把pid檔案放在/var/run/redis.pid,我們也可以在運行多個Redis服務時,指定不同的pid檔案和連接埠
(3)port 6379 指定Redis啟動並執行連接埠,預設是6379
(4)127.0.0.1 在它之前通常有#bind,它表示指定Redis只接收來自該IP地址的請求,如果不進行設定,那麼將處理所有請求,在生產環境下最好設定該選項。
(5)timeout 0 它是設定用戶端串連時的逾時時間,單位為秒,當用戶端在這段時間內沒有發出任何指令,那麼將會關閉該串連,如果為0則表示關閉該設定。
(6)loglevel debug 它是指定了日誌的記錄層級,Redis支援四個層級:debug、verbose、notice、warning。預設是verbose。其中debug記錄很多資訊,用於開發與測試,而verbose會相對少一些,而notice則可以理解為普通的verbose,常用語生產環境,而warning則是非常重要或者嚴重的資訊會記錄到日誌。
(7)stdout logfile /var/log/redis/redis.log 它是log檔案地址,預設值為stdout,也就是標準輸出,如果是後台輸出會輸出到/dev/null。
(8)database 16 它是可用的資料庫數,預設值為16,預設的資料庫為0,而資料庫的範圍從0到(database-1)之間。
(9)save 900 1 是900秒內至少有1個key被改變,它是指出了在多少時間內,有多少次更新操作,就將資料同步到資料檔案rdb,相當於條件觸發抓取快照,它可以多個條件配合,也就是該命令寫多個,每一個的格式都是 save <seconds> < changes>
(10)rdbcompression yes 儲存至本機資料庫時,也就是持久化到rdb檔案時,是否壓縮資料,預設為yes
(11)dbfilename dump.rdb 本地持久化資料庫檔案名,預設為dump.rdb
(12)dir ./ 它是工作目錄,也就是資料庫鏡像備份的檔案放置的路徑,這裡的路徑跟檔案名稱要分開配置是因為Redis在進行備份時,會先將資料庫的狀態寫入到一個臨時檔案中,等備份完成後,再把該臨時檔案替換為上面所指定的檔案,而這裡的臨時檔案和上面配置的備份檔案都會放在這個指定的路徑中。而AOF檔案也會放在這個目錄中,注意這裡必須是一個目錄而不是檔案。
(13)主伺服器IP 主伺服器port 這裡是設定該資料庫為其他資料庫的從資料庫,它是設定當本機為slave時,設定master的IP地址以及連接埠,在Redis啟動時,它會自動從master中進行資料同步。它通常是寫在#slaveof的下面。
(14)masterauth 密碼 當master伺服器設定了密碼保護時,用requirepass制定密碼,用slave伺服器串連master時使用的密碼。
(15)slave-server-stale-data yes 它是當從庫同主機市區串連或者複製進行中的時候,從庫有兩種運行方式,如果為yes,則從庫會繼續響應用戶端的請求,如果是no,則除了info和slaveof命令之外的任何請求都會返回一個錯誤。
(16)repl-ping-slave-period 10 它是從庫會按照一個時間間隔向主庫發送ping,預設是10秒。
(17)repl-timeout 60 它是設定主庫批量資料轉送時間或者ping回複時間間隔,預設是60秒,它一定要比repl-ping-slave-period大才行。
(18)requirepass 密碼 它設定用戶端串連後進行任何其他指定前需要使用的密碼。因為Redis的速度相當快,因此在一台比較好的伺服器下,一個外部的使用者可以在一秒鐘內進行150K次的密碼嘗試,這意味著我們需要指定非常強大的密碼來防止暴力破解。
(19)maxclients 128 它表示設定同一時間最大用戶端串連數,預設無限制,Redis可以同時開啟的用戶端串連數為Redis進程可以開啟的最大檔案描述符數,如果設定為0表示無限制,當用戶端串連達到限制時,Redis會關閉新的連結並向用戶端返回max number of clients。
(20)maxmemory <bytes> 它指定了Redis最大的記憶體限制,Redis在啟動時會把資料載入到記憶體中,達到了最大記憶體後,Redis會先嘗試清楚已經到期或者即將到期的key,同時也會移除空的list對象,在Redis實現了vm機制之後,它會把key放到記憶體,把value放到虛擬記憶體中。如果沒有該機制的時候,如果達到了最大記憶體限制,就無法再進行寫入操作,但是仍然可以進行讀取操作。該設定更適合把Redis當做一個Memcached這樣的緩衝來用,而不是一個資料庫,當我們把Redis當做一個真實的資料庫使用的時候,記憶體使用量將是一個非常大的開銷。
(21)maxmemory-policy volatile-lru 它是當記憶體達到最大值的時候Redis會刪除資料所使用的方法,它總共有五種方式可以選擇:①volatile-lru ,它是使用LRU演算法移除設定過到期時間的key,所謂LRU也就是Least Recently Used ②allkeys-lur,它利用LRU演算法移除任何key ③volatile-random 它移除設定過到期時間的隨機key ④volatile-ttl 它移除即將到期的key ⑤不移除任何key,只是返回一個寫錯誤。
(22)appendonly no 在預設情況下,redis會在後台非同步把資料庫鏡像備份到磁碟,但是該備份是非常耗時的,而且備份也不能很頻繁,如果突然斷電,那麼將會造成較大範圍的資料丟失,因此Redis提供了另外一種更加高效的Database Backup以及災難恢複方式。當我們開啟了appendonly模式之後,Redis會把接受到的每一次寫操作都追加到appendonly.aof中,當Redis重啟後,會從該檔案恢複出之前的狀態,如果appendonly.aof檔案過大,我們還可以使用bgrewriteaof來對appendonly.aof進行重新整理。
(23)appendfilename appendonly.aof 它是AOF檔案的名稱,預設是appendonly.aof。
(24)appendfsync everysec 它是Redis支援的同步AOF檔案的策略,如果是no表示不進行同步,也就是系統去操作,如果是everysec則是表示對寫操作進行累積,每秒同步一次,而always表示每次有寫操作的時候都進行同步。
(25)auto-aof-rewrite-percentage 100 或者 auto-aof-rewrite-min-size 64mb 它是當AOF檔案增長到一定大小的時候Redis能夠調用bgrewriteaof對記錄檔進行重寫,它的原理是這樣的:Redis會記住上次進行寫日誌後檔案的大小進行比較,如果現在的大小比基礎大小大指定的百分比,那麼重寫功能將會自動開啟,我們一般還會指定一個最小大小用於AOF重寫,它用於阻止即使檔案很小但是增長幅度很大也去重寫AOF檔案的情況。如果我們設定percentage為0,則關閉這個特性。如果從開機以來還沒有進行過重寫,那麼日誌大小在開機的時候確定。
(26)slowlog-log-slower-than 10000 這裡的單位是微妙, 我們用slow log來記錄超過特定時間的命令,注意這裡的執行時間不包括諸如串連用戶端,返回結果等時間,它說的只是執行時間,它這裡的單位是微妙。
(27)slowlog-max-len 1024 它是當一個新命令被記錄的時候最早的命令會被從隊列中剔除,它對日誌長度沒有限制,但是它會消耗記憶體,我們可以通過slowlog reset來回收被慢日誌消耗的記憶體。
辛星淺析Redis中的設定檔