1. 程式人生 > >redis.conf:配置詳細說明

redis.conf:配置詳細說明

​​​​​​redis.conf

Redis 支援很多的引數,但都有預設值。

daemonize:

預設情況下,redis 不是在後臺執行的,如果需要在後臺執行,把該項的值更改為yes

pidfile

當Redis 在後臺執行的時候,Redis 預設會把pid 檔案放在/var/run/redis.pid,你可以配

置到其他地址。當執行多個redis 服務時,需要指定不同的pid 檔案和埠

bind

指定Redis 只接收來自於該IP 地址的請求,如果不進行設定,那麼將處理所有請求,在

生產環境中最好設定該項

port

監聽埠,預設為6379

timeout

設定客戶端連線時的超時時間,單位為秒。當客戶端在這段時間內沒有發出任何指令,

那麼關閉該連線

loglevel

log 等級分為4 級,debug, verbose, notice, 和warning。生產環境下一般開啟notice

logfile

配置log 檔案地址,預設使用標準輸出,即列印在命令列終端的視窗上

databases

設定資料庫的個數,可以使用SELECT <dbid>命令來切換資料庫。預設使用的資料庫是0

save

設定Redis 進行資料庫映象的頻率。

if(在60 秒之內有10000 個keys 發生變化時){

進行映象備份

}else if(在300 秒之內有10 個keys 發生了變化){

進行映象備份

}else if(在900 秒之內有1 個keys 發生了變化){

進行映象備份

}

rdbcompression

在進行映象備份時,是否進行壓縮

dbfilename

映象備份檔案的檔名

dir

資料庫映象備份的檔案放置的路徑。這裡的路徑跟檔名要分開配置是因為Redis 在進

行備份時,先會將當前資料庫的狀態寫入到一個臨時檔案中,等備份完成時,再把該該

臨時檔案替換為上面所指定的檔案,而這裡的臨時檔案和上面所配置的備份檔案都會放

在這個指定的路徑當中

slaveof

設定該資料庫為其他資料庫的從資料庫

masterauth

當主資料庫連線需要密碼驗證時,在這裡指定

requirepass

設定客戶端連線後進行任何其他指定前需要使用的密碼。警告:因為redis 速度相當快,

所以在一臺比較好的伺服器下,一個外部的使用者可以在一秒鐘進行150K 次的密碼嘗試,

這意味著你需要指定非常非常強大的密碼來防止暴力破解。

maxclients

限制同時連線的客戶數量。當連線數超過這個值時,redis 將不再接收其他連線請求,

客戶端嘗試連線時將收到error 資訊。

maxmemory

設定redis 能夠使用的最大記憶體。當記憶體滿了的時候,如果還接收到set 命令,redis 將

先嚐試剔除設定過expire 資訊的key,而不管該key 的過期時間還沒有到達。在刪除時,

將按照過期時間進行刪除,最早將要被過期的key 將最先被刪除。如果帶有expire 資訊

的key 都刪光了,那麼將返回錯誤。這樣,redis 將不再接收寫請求,只接收get 請求。

maxmemory 的設定比較適合於把redis 當作於類似memcached 的快取來使用。

appendonly

預設情況下,redis 會在後臺非同步的把資料庫映象備份到磁碟,但是該備份是非常耗時

的,而且備份也不能很頻繁,如果發生諸如拉閘限電、拔插頭等狀況,那麼將造成比較

大範圍的資料丟失。所以redis 提供了另外一種更加高效的資料庫備份及災難恢復方式。

開啟append only 模式之後,redis 會把所接收到的每一次寫操作請求都追加到

appendonly.aof 檔案中,當redis 重新啟動時,會從該檔案恢復出之前的狀態。但是這樣

會造成appendonly.aof 檔案過大,所以redis 還支援了BGREWRITEAOF 指令,對

appendonly.aof 進行重新整理。所以我認為推薦生產環境下的做法為關閉映象,開啟

appendonly.aof,同時可以選擇在訪問較少的時間每天對appendonly.aof 進行重寫一次。

appendfsync

設定對appendonly.aof 檔案進行同步的頻率。always 表示每次有寫操作都進行同步,

everysec 表示對寫操作進行累積,每秒同步一次。這個需要根據實際業務場景進行配置

vm-enabled

是否開啟虛擬記憶體支援。因為redis 是一個記憶體資料庫,而且當記憶體滿的時候,無法接

收新的寫請求,所以在redis 2.0 中,提供了虛擬記憶體的支援。但是需要注意的是,redis

中,所有的key 都會放在記憶體中,在記憶體不夠時,只會把value 值放入交換區。這樣保

證了雖然使用虛擬記憶體,但效能基本不受影響,同時,你需要注意的是你要把

vm-max-memory 設定到足夠來放下你的所有的key

vm-swap-file

設定虛擬記憶體的交換檔案路徑

vm-max-memory

這裡設定開啟虛擬記憶體之後,redis 將使用的最大實體記憶體的大小。預設為0,redis 將

把他所有的能放到交換檔案的都放到交換檔案中,以儘量少的使用實體記憶體。在生產環

境下,需要根據實際情況設定該值,最好不要使用預設的0

vm-page-size

設定虛擬記憶體的頁大小,如果你的value 值比較大,比如說你要在value 中放置部落格、

新聞之類的所有文章內容,就設大一點,如果要放置的都是很小的內容,那就設小一點。

vm-pages

設定交換檔案的總的page 數量,需要注意的是,page table 資訊會放在實體記憶體中,每

8 個page 就會佔據RAM 中的1 個byte。總的虛擬記憶體大小 = vm-page-size * vm-pages

vm-max-threads

設定VM IO 同時使用的執行緒數量。因為在進行記憶體交換時,對資料有編碼和解碼的過

程,所以儘管IO 裝置在硬體上本上不能支援很多的併發讀寫,但是還是如果你所儲存

的vlaue 值比較大,將該值設大一些,還是能夠提升效能的

glueoutputbuf

把小的輸出快取放在一起,以便能夠在一個TCP packet 中為客戶端傳送多個響應,具體

原理和真實效果我不是很清楚。所以根據註釋,你不是很確定的時候就設定成yes

hash-max-zipmap-entries

在redis 2.0 中引入了hash 資料結構。當hash 中包含超過指定元素個數並且最大的元素

沒有超過臨界時,hash 將以一種特殊的編碼方式(大大減少記憶體使用)來儲存,這裡

可以設定這兩個臨界值

activerehashing

開啟之後,redis 將在每100 毫秒時使用1 毫秒的CPU 時間來對redis 的hash 表進行重

新hash,可以降低記憶體的使用。當你的使用場景中,有非常嚴格的實時性需要,不能

夠接受Redis 時不時的對請求有2 毫秒的延遲的話,把這項配置為no。如果沒有這麼嚴

格的實時性要求,可以設定為yes,以便能夠儘可能快的釋放記憶體