常規(guī)配置Redis.conf
- Redis默認不是以守護線程啟動的运怖,可用通過配置,使用yes啟用守護線程啟動
daemonize no
- 當(dāng)Redis使用守護進程運行時搀矫,Redis會把pid寫入/var/run/redis.pid文件抹沪,可以通過pidfile指定
pidfile /var/run/redis.pid
- 指定Redis監(jiān)聽端口,默認是6379
port 6379
- 綁定主機地址
bind 127.0.0.1
- 當(dāng)客戶端閑置多長時間后關(guān)閉連接瓤球,如果指定為0.表示關(guān)閉該功功能
timeout 300
- 指定日志記錄級別融欧,Redis總共支持級別:debug、verbose卦羡、notice噪馏、warning权她,默認是verbose
loglevel verbose
- 日志記錄方式,默認為標準輸出逝薪,若果配置Redis為守護線程方式運行隅要,而這里又配置為日志記錄方式為標準輸出,則日志會發(fā)送到董济、/dev/null
logfile stdout
- 指定在多長時間內(nèi)步清,有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件中虏肾,可以多個條件配合
save <seconds> <changes>
Redis默認配置文件中提供三個條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鐘)內(nèi)有一個更新廓啊。。封豪。谴轮。。吹埠。第步。
如果想手動保存 命令(save) - 指定本地數(shù)據(jù)庫存放目錄
dir ./
- 設(shè)置密碼,如果設(shè)置了密碼,AUTH <password>命令提供密碼
requirepass foocared
- 設(shè)置同一時間最大的客戶端連接數(shù)缘琅,默認無限制粘都,如果超出設(shè)置數(shù),Redis會關(guān)閉新的連接冰向客戶端返回max number of clients reached 錯誤
maxclients 128
17 . 指定Redis最大沒存限制,Redis在啟動時會將數(shù)據(jù)加載到內(nèi)存中刷袍,達到最大內(nèi)存后翩隧,Redis會首先嘗試清除到期或即將到期的key,當(dāng)此方法處理后呻纹,仍然達到內(nèi)存設(shè)置堆生,將無法在進行寫操作,但仍然可以進行讀取操作雷酪。Redis新的VM機制淑仆,會將key存放在內(nèi)存,value存放在Swap區(qū)
maxmemory <bytes>
Redis的持久化
RDB(Redis DataBase)
優(yōu)點
- RDB是一個非常緊湊的文件
- RDB在保存RDB文件時父進程唯一需要做的就是fork出一個進程太闺,接下來的工作全部由子進程來做糯景,父進程不需要做其他IO操作,所以RDB持久化方式可以最大化Redis的性能省骂。
- 與AOF相比蟀淮,再回復(fù)大的數(shù)據(jù)集的時候,RDB方式會更快一些钞澳。
缺點
- 數(shù)據(jù)丟失風(fēng)險大
- RDB需要經(jīng)常fork子進程來保存數(shù)據(jù)集到硬盤上怠惶,當(dāng)數(shù)據(jù)集比較大的時候,fork的過程是非常耗時的轧粟,可能會導(dǎo)致Redis在一些毫秒級不能響應(yīng)客戶端請求
AOF(Append Only File)
- 修復(fù)aof文件
redis-check-aop -fix appendonly.aop
- 開啟AOF持久化數(shù)據(jù)
appendonly = yes
- 持久化文件名稱
appendfilename
- appendfsync (持久化策略)
- Always 同步持久化策治,每次發(fā)生數(shù)據(jù)變更會被立即記錄到磁盤脓魏,性能較差但數(shù)據(jù)的完整性比較好
- Everysec:出廠默認推薦,異步操作通惫,每秒記錄茂翔,如果一秒內(nèi)宕機,有數(shù)據(jù)丟失
- NO
- NO-appendfsync-on-rewrite:
- 優(yōu)勢
- AOF文件是一個進行追加的日志文件
- Redis可以在AOF文件體積變得過大時履腋,自動的在后臺對AOF進行重寫
- AOF文件有序的保存了對數(shù)據(jù)庫執(zhí)行的所有寫操作珊燎,這些寫入操作以Redis協(xié)議的格式保存,因此AOF文件的內(nèi)容非常容易被人讀懂遵湖,對文件進行分析也很輕松
- 缺點
- 對相同的數(shù)據(jù)集來說悔政,AOF文件的體積通常要大于RDB文件的體積
- 更加就所有使用的方式fsync策略,AOF的速度可能會慢于RDB
- 官方建議
- RDB持久化方式能在指定的時間間隔能對你的數(shù)據(jù)進行快照存儲
- AOF持久化方式記錄每次對服務(wù)器寫的操作延旧,當(dāng)服務(wù)器重啟的時候會重新執(zhí)行這些命令來回復(fù)原始的數(shù)據(jù)谋国,AOF命令以Redis協(xié)議追加保存每次寫的操作到文件的末尾。
- Redis還能對AOF文件進行后臺重寫迁沫,是的AOF文件的體積不至于過大
- 只做緩存:如果你只希望你的數(shù)據(jù)在服務(wù)器運行的時候存在芦瘾,你也可以不適用任何持久化方式
- 同時開啟倆種持久化方式:
- 這種情況下,當(dāng)redis重啟的時候會優(yōu)先載入AOF文件來回復(fù)原始的數(shù)據(jù)弯洗,因為在通常情況下AOF文件保存的數(shù)據(jù)集要比RDB文件保存的數(shù)據(jù)集要完整旅急。
- RDB的數(shù)據(jù)不實時逢勾,同時使用兩者時服務(wù)器重啟時也只會找AOF文件牡整,那要不要只使用AOF呢?建議不要溺拱,應(yīng)為RDB更合適用于備份數(shù)據(jù)庫(AOF在不斷變化不好備份)逃贝,快速重啟,而且不會有AOF可能潛在的bug迫摔,留著作為一個萬一的手段沐扳。