Redis的持久化机制与内存管理机制
1、概述
Redis的持久化機(jī)制有兩種:RDB 和 AOF ,這兩種機(jī)制有什么區(qū)別?正式環(huán)境應(yīng)該采用哪種機(jī)制?
我們的服務(wù)器內(nèi)存資源是有限的,如果內(nèi)存被Redis的緩存占滿了怎么辦?這就要看Redis的內(nèi)存管理策略是怎么配置的了。
今天我們就來聊一下上面提出的這兩個(gè)問題。
2、Redis的持久化機(jī)制
2.1 RDB
1、什么是RDB?
RDB 全稱 Redis DataBase,是 Redis 默認(rèn)的持久化機(jī)制。
RDB機(jī)制的原理是:每隔一段時(shí)間把Redis在內(nèi)存中的數(shù)據(jù)寫到磁盤,手動(dòng)停止Redis服務(wù)時(shí),也會(huì)往磁盤上寫,當(dāng)Redis再次啟動(dòng)時(shí),會(huì)從磁盤上讀取到數(shù)據(jù),恢復(fù)到內(nèi)存中。
2、RDB的好處
- 會(huì)定時(shí)對(duì)數(shù)據(jù)進(jìn)行全量備份
- 恢復(fù)數(shù)據(jù)簡單,支持遠(yuǎn)程傳輸
- 可以保證備份數(shù)據(jù)的完整性
- 恢復(fù)數(shù)據(jù)速度塊
3、RDB的壞處
- 由于是有時(shí)間間隔的備份,因此當(dāng)服務(wù)異常時(shí)數(shù)據(jù)可能會(huì)丟失一部分
- 備份時(shí)對(duì)CPU的負(fù)擔(dān)較大
4、RDB在配置文件中的相關(guān)配置
1)文件名及文件保存路徑的配置
2)設(shè)置同步硬盤的時(shí)間
save ""? 代表不同步到磁盤,數(shù)據(jù)只在內(nèi)存存儲(chǔ)
save 300 100? 代表有100個(gè)鍵發(fā)生變更,每300秒同步磁盤
?3)其他配置
stop-writes-on-bgsave-error yes? ?// 設(shè)置為yes,則在寫入磁盤的的過程中出錯(cuò),會(huì)停止寫操作
rdbcompression yes? ? //? 設(shè)置為yes,則rdb文件在寫的過程中會(huì)進(jìn)行壓縮,對(duì)CPU有一定損耗
rdbchecksum yes? ?// 設(shè)置為yes,會(huì)對(duì)rdb進(jìn)行校驗(yàn),對(duì)性能有一定損耗
2.2 AOF
1、什么是AOF
AOF 全稱 Append Only File,默認(rèn)是關(guān)閉的。
AOF是以日志的形式記錄Redis的寫操作,讀操作不會(huì)記錄。以追加的方式存儲(chǔ)文件,恢復(fù)時(shí)會(huì)將日志文件中的寫操作重新執(zhí)行一遍。
2、AOF的好處
- 以秒級(jí)進(jìn)行備份,更能保證數(shù)據(jù)的完整性
- 如果磁盤滿了,可以執(zhí)行redis-check-aof工具解決
- 當(dāng)日志文件太大,會(huì)自動(dòng)進(jìn)行優(yōu)化壓縮
- 日志中的寫操作,可以手動(dòng)修改,恢復(fù)起來更靈活
3、AOF的壞處
- 日志文件比RDB文件大
- 每秒都會(huì)與磁盤有IO操作,影響性能
4、AOF在配置文件中的相關(guān)配置
1)開啟AOF,設(shè)置文件名
?2)設(shè)置同步策略
# appendfsync always? ? // 有一條寫操作就同步一次(性能差)
appendfsync everysec? ?// 每秒同步一次(推薦)
# appendfsync no? ? ? ? ? // 不同步
?3)重寫策略
auto-aof-rewrite-percentage 100? ? // AOF文件是上次大小的100%(建議調(diào)小)
auto-aof-rewrite-min-size 64mb? ? ? // AOF文件大小達(dá)到64MB(建議調(diào)大)
以上兩個(gè)配置建議修改,根據(jù)實(shí)際情況調(diào)整。
2.3 RDB 、AOF 如何選擇
如果只是把Redis當(dāng)緩存來用,不介意數(shù)據(jù)的丟失,建議使用RDB方式,如果對(duì)數(shù)據(jù)的完整性比較在意,建議使用AOF方式。
3、Redis的內(nèi)存管理機(jī)制
我們的服務(wù)器內(nèi)存資源是有限的,如果內(nèi)存被Redis的緩存占滿了,我們應(yīng)該如何處理呢?
通過調(diào)整配置文件中的 maxmemory 和?maxmemory-policy?
maxmemory 是指定內(nèi)存達(dá)到多大時(shí),執(zhí)行內(nèi)存優(yōu)化,默認(rèn)單位是byte
maxmemory-policy 是執(zhí)行的優(yōu)化策略:
- noeviction Redis的默認(rèn)配置,不清理過期的緩存,沒有內(nèi)存則返回錯(cuò)誤
- allkeys-lru 推薦配置,清除最少用的舊緩存
4、綜述
今天聊了一下Redis的持久化機(jī)制和內(nèi)存管理機(jī)制,希望能對(duì)大家有所幫助。
希望大家多多評(píng)論交流,共同成長。
關(guān)注追風(fēng)人聊Java,每天更新Java干貨。
總結(jié)
以上是生活随笔為你收集整理的Redis的持久化机制与内存管理机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你必须懂也可以懂的微服务系列三:服务调用
- 下一篇: linux cmake编译源码,linu