国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 什么是持久化數(shù)據(jù)結(jié)構(gòu)?

什么是持久化數(shù)據(jù)結(jié)構(gòu)?

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-11 07:08:09 1696979289

一、什么是持久化數(shù)據(jù)結(jié)構(gòu)

持久化存儲(chǔ),其實(shí)主要是針對(duì)內(nèi)存數(shù)據(jù)的,以典型的Redis來(lái)說(shuō),持久化存儲(chǔ)主要有三種方式:

1、RDB

RDB: 保存某個(gè)時(shí)間點(diǎn)的全量數(shù)據(jù)快照

觸發(fā)方式

1. save: 阻塞Redis的服務(wù)器進(jìn)程,直到RDB文件被創(chuàng)建完畢

2. bgsave: fork出子進(jìn)程來(lái)創(chuàng)建RDB文件,不阻塞服務(wù)器進(jìn)程, lastsave 指令可以查看最近的備份時(shí)間

3. 根據(jù)redis.conf里的save m n配置定時(shí)觸發(fā)(用的是BGSAVE)

4. 主從復(fù)制時(shí),主節(jié)點(diǎn)自動(dòng)觸發(fā)

5. 執(zhí)行debug relaod命令

6. 執(zhí)行shutdown且沒(méi)有開(kāi)啟AOF持久化

2、AOF

AOF: 增量存儲(chǔ)命令

觸發(fā)方式

1. BGREWRITEAOF: 增量追加命令

2. 根據(jù)redis.conf里的appendfsync配置定時(shí)觸發(fā)

3. AOF文件重寫(xiě)

3、混合持久化

為解決AOF文件啟動(dòng)加載慢,不利于快速恢復(fù)的缺點(diǎn),RedisV4.0提供了新的持久化方式——混合持久化。

混合持久化的文件內(nèi)容: [RDB file][AOF tail]

持久化過(guò)程:

1. 將重寫(xiě)(rewrite)這一刻之前的數(shù)據(jù)做RDB快照處理

2. 將RDB快照內(nèi)容和AOF增量命令先后寫(xiě)入新的AOF臨時(shí)文件

3. 重寫(xiě)完成后,對(duì)AOF臨時(shí)文件改名,并覆蓋舊的AOF文件

在redis重啟的時(shí)候,可以先加載RDB文件,然后再重放增量的AOF日志就可以完全替代之前的AOF全量文件重放,因此能大幅提高重啟效率提高。

延伸閱讀:

二、可持久化實(shí)際應(yīng)用

1.幾何計(jì)算

在幾何計(jì)算中有許多離線算法,例如懸線掃描法,其基本策略是一次掃描后給出所有詢問(wèn)的回答,在時(shí)間復(fù)雜度分析相當(dāng)優(yōu)異。但在強(qiáng)迫在線的情況下,每次都要進(jìn)行一次懸線掃描,詢問(wèn)操作的時(shí)間復(fù)雜度就從對(duì)數(shù)時(shí)間降為線性。

為了解決時(shí)間復(fù)雜度上的問(wèn)題,在這里可以引入可持久化的思維。我們將掃描線的時(shí)間軸作為一個(gè)變動(dòng)依據(jù),持久化相關(guān)的結(jié)構(gòu),只要我們能將詢問(wèn)在對(duì)數(shù)時(shí)間內(nèi)穿梭于這個(gè)時(shí)間軸,必能動(dòng)態(tài)解決先前的問(wèn)題。

2.字串處理

為了達(dá)到非常高效率的合并操作,防止大量重復(fù)性字串的生成伴隨的效能退化,使得各方面的操作都能遠(yuǎn)低于線性操作。如C++中的rope就是一個(gè)可持久化的數(shù)據(jù)結(jié)構(gòu)。不只是字串操作。若處理類型有大量重復(fù)操作,均可以考慮將數(shù)據(jù)結(jié)構(gòu)進(jìn)行可持久化處理,以達(dá)到壓縮時(shí)間開(kāi)支的效果。

3.版本回溯

實(shí)際上就是對(duì)應(yīng)大部分的應(yīng)用軟體中的redo/undo。如果資料庫(kù)/操作變動(dòng)為了高效率操作而會(huì)配上復(fù)雜的結(jié)構(gòu)(并不像 hash, set 反轉(zhuǎn)操作只需要常數(shù)或?qū)?shù)時(shí)間),那么為了快速回推變動(dòng)結(jié)果,持久化結(jié)構(gòu)就是要減少 redo/undo 的花費(fèi)。

資料庫(kù)本身可以常數(shù)回推,紀(jì)錄變動(dòng)的部分情況即可。而應(yīng)用層的計(jì)算,大部分實(shí)作都是砍掉快取,并且重新計(jì)算出一份新的結(jié)構(gòu),有時(shí)候回推的變動(dòng)大小為 m,為了重新計(jì)算結(jié)構(gòu)而消耗了 n + m n+mn+m,如果 n nn 和 m mm 的差距非常大,那連續(xù)回推的體感就很糟糕。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
軟件架構(gòu)如何能夠滿足ASPICE流程?

一、軟件架構(gòu)如何能夠滿足ASPICE流程架構(gòu)的用途是把整個(gè)產(chǎn)品劃分為更為細(xì)節(jié)的板塊:軟件、硬件、通信等。在這個(gè)基礎(chǔ)上軟件整體將按照用途、功能...詳情>>

2023-10-11 08:47:00
紅黑樹(shù)為什么叫紅黑樹(shù)?

一、紅黑樹(shù)叫紅黑樹(shù)的原因紅黑樹(shù)(Red-Black Tree)是一種自平衡的二叉搜索樹(shù)(Binary Search Tree),其在插入和刪除操作時(shí)能夠自動(dòng)調(diào)整樹(shù)的結(jié)...詳情>>

2023-10-11 08:42:41
為什么數(shù)組索引數(shù)據(jù)那么快速、有效?

一、數(shù)組索引數(shù)據(jù)快速、有效的原因1、連續(xù)內(nèi)存存儲(chǔ)數(shù)組在內(nèi)存中是連續(xù)存儲(chǔ)的,數(shù)組的元素在內(nèi)存中按照一定的順序排列,相鄰元素之間沒(méi)有間隔。...詳情>>

2023-10-11 08:36:19
數(shù)據(jù)結(jié)構(gòu)里的逐點(diǎn)插入法、排序二叉樹(shù)是什么?

一、數(shù)據(jù)結(jié)構(gòu)里的逐點(diǎn)插入法、排序二叉樹(shù)逐點(diǎn)插入法三角剖分是一種研究方法。三角剖分≠TIN三角剖分是代數(shù)拓?fù)鋵W(xué)里最基本的研究方法。 以曲面為...詳情>>

2023-10-11 08:08:01
在數(shù)據(jù)結(jié)構(gòu)中i=L->length是什么意思?

一、在數(shù)據(jù)結(jié)構(gòu)中i=L->length是什么意思在數(shù)據(jù)結(jié)構(gòu)中,i=L->length通常表示一個(gè)線性表L的長(zhǎng)度,即L中元素的個(gè)數(shù)。線性表是一種數(shù)據(jù)結(jié)構(gòu),它由n...詳情>>

2023-10-11 07:54:48
快速通道