天天看點

Redis配置檔案redis.conf參數解讀

redis.conf配置選項如下

daemonize 是否以背景程序運作,預設為no

pidfile 如以背景程序運作,則需指定一個pid,預設為/var/run/redis.pid

bind 綁定主機IP,預設值為127.0.0.1(注釋)

port 監聽端口,預設為6379

timeout 逾時時間,預設為300(秒)

loglevel 日志記錄等級,有4個可選值,debug,verbose(預設值),notice,warning

logfile 日志記錄方式,預設值為stdout

databases 可用資料庫數,預設值為16,預設資料庫為0

save <seconds> <changes> 指出在多長時間内,有多少次更新操作,就将資料同步到資料檔案。這個可以多個條件配合,比如預設配置檔案中的設定,就設定了三個條件。

save 900 1  900秒(15分鐘)内至少有1個key被改變

save 300 10  300秒(5分鐘)内至少有300個key被改變

save 60 10000  60秒内至少有10000個key被改變

rdbcompression 存儲至本地資料庫時是否壓縮資料,預設為yes

dbfilename 本地資料庫檔案名,預設值為dump.rdb

dir 本地資料庫存放路徑,預設值為 ./

slaveof <masterip> <masterport> 當本機為從服務時,設定主服務的IP及端口(注釋)

masterauth <master-password> 當本機為從服務時,設定主服務的連接配接密碼(注釋)

requirepass 連接配接密碼(注釋)

maxclients 最大用戶端連接配接數,預設不限制(注釋)

maxmemory <bytes> 設定最大記憶體,達到最大記憶體設定後,Redis會先嘗試清除已到期或即将到期的Key,當此方法處理後,任到達最大記憶體設定,将無法再進行寫入操作。(注釋)

appendonly 是否在每次更新操作後進行日志記錄,如果不開啟,可能會在斷電時導緻一段時間内的資料丢失。因為redis本身同步資料檔案是按上面save條件來同步的,是以有的資料會在一段時間内隻存在于記憶體中。預設值為no

appendfilename 更新日志檔案名,預設值為appendonly.aof(注釋)

appendfsync 更新日志條件,共有3個可選值。no表示等作業系統進行資料緩存同步到磁盤,always表示每次更新操作後手動調用fsync()将資料寫到磁盤,everysec表示每秒同步一次(預設值)。

vm-enabled 是否使用虛拟記憶體,預設值為no

vm-swap-file 虛拟記憶體檔案路徑,預設值為/tmp/redis.swap,不可多個Redis執行個體共享

vm-max-memory 将所有大于vm-max-memory的資料存入虛拟記憶體,無論vm-max-memory設定多小,所有索引資料都是記憶體存儲的(Redis的索引資料就是keys),也就是說,當vm-max-memory設定為0的時候,其實是所有value都存在于磁盤。預設值為0。

Redis官方文檔對VM的使用提出了一些建議:
當你的key很小而value很大時,使用VM的效果會比較好.因為這樣節約的記憶體比較大.
當你的key不小時,可以考慮使用一些非常方法将很大的key變成很大的value,比如你可以考慮将key,value組合成一個新的value.
最好使用linux ext3 等對稀疏檔案支援比較好的檔案系統儲存你的swap檔案.
vm-max-threads這個參數,可以設定通路swap檔案的線程數,設定最好不要超過機器的核數,如果設定為0,那麼所有對swap檔案的操作都是串行的.可能會造成比較長時間的延遲,但是對資料完整性有很好的保證.      

有了VM功能,Redis終于擺脫了受記憶體容量限制的噩夢了,似乎我們可以稱其為Redis資料庫了,我們還可以想象又有多少新的用法可以産生.當然,希望這一功能不會對Redis原有的非常牛B的記憶體存儲性能有所影響.

Virtual Memory User Guide http://code.google.com/p/redis/wiki/VirtualMemoryUserGuide