1.Redis簡介
Redis 是key-value數(shù)據(jù)庫敛熬,支持主從同步终佛,數(shù)據(jù)存在內(nèi)存揣非,性能卓越。
官方網(wǎng)址:http://redis.io/
redis下載地址:https://github.com/MSOpenTech/redis/releases
安裝完成目錄如下:
2.redis的配置文件redis.windows.conf解讀
2-1.遠(yuǎn)程外網(wǎng)訪問redis
修改配置文件中bind為: bind 0.0.0.0
2-2.監(jiān)聽端口port 6379
2-3.保存策略
after 900 sec (15 min) if at least 1 key changed
after 300 sec (5 min) if at least 10 keys changed
after 60 sec if at least 10000 keys changed
```
當(dāng)修改至少1個key呼渣,15分鐘保存一次,以此類推寞埠。
save 00 1
save 300 10
save 60 10000
###2-4.dbfilename dump.rdb存儲文件
##3.AOF和RDB
參考資料:
http://redis.io/topics/persistence
>https://my.oschina.net/u/780876/blog/544061
redis支持兩種持久化的方式屁置,可以單獨(dú)使用或者結(jié)合起來使用
第一種:RDB方式(redis默認(rèn)的持久化方式)
第二種:AOF方式
一、RDB
rdb方式的持久化是通過快照完成的仁连,當(dāng)符合一定條件時redis會自動將內(nèi)存中的所有數(shù)據(jù)執(zhí)行快照操作并存儲到硬盤上蓝角。默認(rèn)存儲在redis根目錄的dump.rdb文件中。(文件名在配置文件中dbfilename)
redis進(jìn)行快照的時機(jī)(在配置文件redis.conf中)
save 900 1:表示900秒內(nèi)至少一個鍵被更改則進(jìn)行快照饭冬。
save 300 10
save 60 10000
redis自動實現(xiàn)快照的過程
1:redis使用fork函數(shù)復(fù)制一份當(dāng)前進(jìn)程的副本(子進(jìn)程)
2:父進(jìn)程繼續(xù)接收并處理客戶端發(fā)來的命令使鹅,而子進(jìn)程開始將內(nèi)存中的數(shù)據(jù)寫入硬盤中的臨時文件
3:當(dāng)子進(jìn)程寫入完所有數(shù)據(jù)后會用該臨時文件替換舊的RDB文件,至此昌抠,一次快照操作完成患朱。
注意:redis在進(jìn)行快照的過程中不會修改RDB文件,只有快照結(jié)束后才會將舊的文件替換成新的炊苫,也就是說任何時候RDB文件都是完整的裁厅。 這就使得我們可以通過定時備份RDB文件來實現(xiàn)redis數(shù)據(jù)庫的備份, RDB文件是經(jīng)過壓縮的二進(jìn)制文件侨艾,占用的空間會小于內(nèi)存中的數(shù)據(jù)执虹,更加利于傳輸。
手動執(zhí)行save或者bgsave命令讓redis執(zhí)行快照唠梨。
兩個命令的區(qū)別在于袋励,save是由主進(jìn)程進(jìn)行快照操作,會阻塞其它請求。bgsave是由redis執(zhí)行fork函數(shù)復(fù)制出一個子進(jìn)程來進(jìn)行快照操作插龄。
文件修復(fù):redis-check-dump
rdb的優(yōu)缺點
優(yōu)點:由于存儲的有數(shù)據(jù)快照文件愿棋,恢復(fù)數(shù)據(jù)很方便。
缺點:會丟失最后一次快照以后更改的所有數(shù)據(jù)均牢。
二糠雨、AOF
aof方式的持久化是通過日志文件的方式。默認(rèn)情況下redis沒有開啟aof徘跪,可以通過參數(shù)appendonly參數(shù)開啟甘邀。
appendonly yes
aof文件的保存位置和rdb文件的位置相同,都是dir參數(shù)設(shè)置的垮庐,默認(rèn)的文件名是appendonly.aof松邪,可以通過 appendfilename參數(shù)修改
appendfilename appendonly.aof
redis寫命令同步的時機(jī)
a ppendfsync always 每次都會執(zhí)行
appendfsync everysec 默認(rèn) 每秒執(zhí)行一次同步操作(推薦,默認(rèn))
appendfsync no不主動進(jìn)行同步哨查,由操作系統(tǒng)來做逗抑,30秒一次
aof日志文件重寫
auto-aof-rewrite-percentage 100(當(dāng)目前aof文件大小超過上一次重寫時的aof文件大小的百分之多少時會再次進(jìn)行重寫,如果之前沒有重寫寒亥,則以啟動時的aof文件大小為依據(jù))
auto-aof-rewrite-min-size 64mb
手動執(zhí)行bgrewriteaof進(jìn)行重寫
重寫的過程只和內(nèi)存中的數(shù)據(jù)有關(guān)邮府,和之前的aof文件無關(guān)。 所謂的“重寫”其實是一個有歧義的詞語溉奕, 實際上褂傀, AOF 重寫并不需要對原有的 AOF 文件進(jìn)行任何寫入和讀取, 它針對的是數(shù)據(jù)庫中鍵的當(dāng)前值加勤。
文件修復(fù):redis-check-aof
動態(tài)切換redis持久方式仙辟,從 RDB 切換到 AOF(支持Redis 2.2及以上)
CONFIG SET appendonly yes
CONFIG SET save ""(可選)
注意:當(dāng)redis啟動時,如果rdb持久化和aof持久化都打開了鳄梅,那么程序會優(yōu)先使用aof方式來恢復(fù)數(shù)據(jù)集叠国,因為aof方式所保存的數(shù)據(jù)通常是最完整的。如果aof文件丟失了卫枝,則啟動之后數(shù)據(jù)庫內(nèi)容為空煎饼。
注意:如果想把正在運(yùn)行的redis數(shù)據(jù)庫,從RDB切換到AOF校赤,建議先使用動態(tài)切換方式吆玖,再修改配置文件,重啟數(shù)據(jù)庫马篮。(不能直接修改配置文件沾乘,重啟數(shù)據(jù)庫,否則數(shù)據(jù)庫中數(shù)據(jù)就為空了浑测。)