這篇文章給大家分享的是有關(guān)Redis持久化是什么意思的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
成都創(chuàng)新互聯(lián)公司從2013年成立,公司以成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、系統(tǒng)開發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶成百上千,涉及國內(nèi)多個省份客戶。擁有多年網(wǎng)站建設(shè)開發(fā)經(jīng)驗。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計、宣傳推廣等服務(wù)。 通過專業(yè)的設(shè)計、獨特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。centos7.0 redis4.0 redis存放目錄:/usr/local/redis redis.conf存放目錄:/usr/local/redis/data
redis的所有數(shù)據(jù)都是保存在內(nèi)存中,redis崩掉數(shù)據(jù)會丟失。redis持久化就是把數(shù)據(jù)保存在磁盤上。利用永久性存儲介質(zhì)將數(shù)據(jù)進(jìn)程保存,在特定的時間將保存的數(shù)據(jù)進(jìn)行恢復(fù)的工作機制稱為持久化。
持久化過程保存的是什么呢?
第一種快照形式,存儲數(shù)據(jù)結(jié)果,關(guān)注點在數(shù)據(jù),也就是下文會講到的RDB
第二種操作過程,存儲操作過程,存儲結(jié)構(gòu)復(fù)雜,關(guān)注點在數(shù)據(jù)的操作過程,也就是下文會講到的AOF
下圖是redis.conf的配置信息,在執(zhí)行完save后會生成一個dump.rdb的文件現(xiàn)在我們設(shè)置一個值,然后save一下,在/usr/local/redis/data下就會有一個dump6379.rdb的一個文件
其實這個數(shù)據(jù)恢復(fù)相對于其他關(guān)系型數(shù)據(jù)庫恢復(fù)基本就不用操作什么。只需要重新在啟動就好了
此圖來源于網(wǎng)絡(luò)視頻。 save指令的執(zhí)行會阻塞當(dāng)前redis服務(wù)器,直到當(dāng)前RDB過程完為止,有可能會造成長時間的阻塞。這個指令在工作過程中基本以被廢棄不在使用。會以bgsave全部代替
當(dāng)在redis執(zhí)行了bgsave后會直接返回一個Background saving started
這個時候我們在看一下日志文件,bgsave命令是針對save阻塞問題做的優(yōu)化
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
save 【時間】 【key改變數(shù)量】
也就是說在300秒有10個key值發(fā)生變化了,就會在后臺執(zhí)行bgsave
AOF持久化:以獨立日志的方式記錄每次寫命令,重啟時在重新執(zhí)行AOF文件中命令達(dá)到數(shù)據(jù)恢復(fù)的目的。與RDB相比可以簡單描述為記錄數(shù)據(jù)產(chǎn)生的過程
AOF的主要作用是解決了數(shù)據(jù)持久化的實時性,目前已經(jīng)是redis持久化的主流方式
執(zhí)行一條redis命令
redis的AOF會把命令刷新緩沖區(qū)
然后根據(jù)一定的策略同步的到redis.conf配置的.aof文件中
appendonly yes|no
appendfsync always| everysec | no
然后使用重啟redis服務(wù),就可以在usr/local/redis/data目錄下可以看到appendonly.aof文件了然后我們在redis客戶端執(zhí)行一條命令,在來查看一下??梢钥吹綌?shù)據(jù)都會存入appendonly.aof這個文件中。
我們先看一個案例,我們重復(fù)設(shè)置了name這個key后,打開appendonly.aof文件查看,可以看到有三個操作,但是這三個操作我們都是修改的一個key??!我們只保存最后一個key不行嗎?帶著這個疑問,我們在繼續(xù)往下看
隨著命令不斷寫入AOF,文件會越來越大,為了解決這個問題,redis引入了AOF重寫機制壓縮文件體積。AOF文件重寫是將redis進(jìn)程內(nèi)的數(shù)據(jù)轉(zhuǎn)化為寫命令同步到新AOF文件的過程。簡單說就是將對同一個數(shù)據(jù)的若干條命令執(zhí)行結(jié)果轉(zhuǎn)化為最終結(jié)果數(shù)據(jù)對應(yīng)指令的執(zhí)行記錄。
如在上邊我們執(zhí)行了三次 set name 指令,但是我們最終就只需要最后一次執(zhí)行的數(shù)據(jù)。也就是我們只需要最后一次執(zhí)行記錄即可。
hdel,srem
。 多次設(shè)置一個key值等lpush list a lpush lsit b lpush list c
可以轉(zhuǎn)化為lpush list a b c
。但是為了防止數(shù)據(jù)量過大造成客戶端緩沖區(qū)溢出,對list,set,hash,zset
類型每條指令最多寫入64個元素指令:bgrewriteaof
接著我們3-5的問題,我們在命令行執(zhí)行bgrewriteaof指令然后查看appendonly.aof文件
當(dāng)執(zhí)行完后會發(fā)現(xiàn)文件變小了,文件里也就只有一條指令了
配置:auto-aof-rewrite-percentage 100 | auto-aof-rewrite-min-size 64mb
觸發(fā)對比參數(shù):aof_current_size | aof_base_size
當(dāng)aof_current_size > auto-aof-rewrite-min-size 64mb 會啟動重寫
此圖來源于網(wǎng)絡(luò)
對數(shù)據(jù)非常敏感,建議使用默認(rèn)的AOF持久化方案
數(shù)據(jù)呈現(xiàn)階段有效性,建議使用RDB持久化方案
綜合對比
感謝各位的閱讀!關(guān)于Redis持久化是什么意思就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!