中文字幕av高清_国产视频一二区_男女羞羞羞视频午夜视频_成人精品一区_欧美色视_在线视频这里只有精品

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

手機(jī)站
千鋒教育

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

千鋒教育

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

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

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

當(dāng)前位置:首頁  >  技術(shù)干貨  > 為什么Redis先執(zhí)行指令,再記錄AOF日志?

為什么Redis先執(zhí)行指令,再記錄AOF日志?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-13 13:55:34 1697176534

一、Redis先執(zhí)行指令,再記錄AOF日志的原因

Redis是一種內(nèi)存數(shù)據(jù)庫,對于大多數(shù)的操作,Redis會先將請求寫入內(nèi)存中的數(shù)據(jù)結(jié)構(gòu),然后再異步地將修改同步到磁盤上的AOF(Append-Only File)文件中,這就是非常高效的原因。Redis的性能很大程度上取決于CPU的速度和內(nèi)存的大小。因此,Redis選擇將大部分?jǐn)?shù)據(jù)保存在內(nèi)存中,以提高運(yùn)行速度。Redis 的數(shù)據(jù)是存內(nèi)存的,斷電之后就丟了。Redis 的 AOF / RDB 相當(dāng)于有一個把硬盤當(dāng)內(nèi)存的 slave。存儲引擎數(shù)據(jù)是存硬盤的,斷電之后,可能有臟數(shù)據(jù),也可能沒有,需要 redo log / undo log 來做原子 commit。保護(hù) commit 的數(shù)據(jù)是不可能在 commit 之后寫的。存儲引擎的日志只保護(hù) uncommitted data。

二、Redis 在 Java Web 中的應(yīng)用

1、緩存

在日常對數(shù)據(jù)庫的訪問中,讀操作的次數(shù)遠(yuǎn)超寫操作,比例大概在?1:9?到?3:7,所以需要讀的可能性是比寫的可能大得多的。當(dāng)我們使用SQL語句去數(shù)據(jù)庫進(jìn)行讀寫操作時,數(shù)據(jù)庫就會去磁盤把對應(yīng)的數(shù)據(jù)索引取回來,這是一個相對較慢的過程。

如果我們把數(shù)據(jù)放在 Redis 中,也就是直接放在內(nèi)存之中,讓服務(wù)端直接去讀取內(nèi)存中的數(shù)據(jù),那么這樣速度明顯就會快上不少,并且會極大減小數(shù)據(jù)庫的壓力,但是使用內(nèi)存進(jìn)行數(shù)據(jù)存儲開銷也是比較大的,限于成本的原因,一般我們只是使用 Redis 存儲一些常用和主要的數(shù)據(jù),比如用戶登錄的信息等。

一般而言在使用 Redis 進(jìn)行存儲的時候,我們需要從以下幾個方面來考慮:

**業(yè)務(wù)數(shù)據(jù)常用嗎?命中率如何?**如果命中率很低,就沒有必要寫入緩存;**該業(yè)務(wù)數(shù)據(jù)是讀操作多,還是寫操作多?**如果寫操作多,頻繁需要寫入數(shù)據(jù)庫,也沒有必要使用緩存;**業(yè)務(wù)數(shù)據(jù)大小如何?**如果要存儲幾百兆字節(jié)的文件,會給緩存帶來很大的壓力,這樣也沒有必要。

在考慮了這些問題之后,如果覺得有必要使用緩存,那么就使用它。

當(dāng)名列前茅次讀取數(shù)據(jù)的時候,讀取 Redis 的數(shù)據(jù)就會失敗,此時就會觸發(fā)程序讀取數(shù)據(jù)庫,把數(shù)據(jù)讀取出來,并且寫入 Redis 中;當(dāng)?shù)诙我约耙院笮枰x取數(shù)據(jù)時,就會直接讀取 Redis,讀到數(shù)據(jù)后就結(jié)束了流程,這樣速度就大大提高了。

從上面的分析可以知道,讀操作的可能性是遠(yuǎn)大于寫操作的,所以使用 Redis 來處理日常中需要經(jīng)常讀取的數(shù)據(jù),速度提升是顯而易見的,同時也降低了對數(shù)據(jù)庫的依賴,使得數(shù)據(jù)庫的壓力大大減少。

分析了讀操作的邏輯,下面我們來看看寫操作的流程

從流程可以看出,更新或者寫入的操作,需要多個 Redis 的操作,如果業(yè)務(wù)數(shù)據(jù)寫次數(shù)遠(yuǎn)大于讀次數(shù)那么就沒有必要使用 Redis。

2、高速讀/寫的場合

在如今的互聯(lián)網(wǎng)中,越來越多的存在高并發(fā)的情況,比如天貓雙11、搶紅包、搶演唱會門票等,這些場合都是在某一個瞬間或者是某一個短暫的時刻有成千上萬的請求到達(dá)服務(wù)器,如果單純的使用數(shù)據(jù)庫來進(jìn)行處理,就算不崩,也會很慢的,輕則造成用戶體驗極差用戶量流失,重則數(shù)據(jù)庫癱瘓,服務(wù)宕機(jī),而這樣的場合都是不允許的。所以我們需要使用 Redis 來應(yīng)對這樣的高并發(fā)需求的場合,我們先來看看一次請求操作的流程圖

我們來進(jìn)一步闡述這個過程:

當(dāng)一個請求到達(dá)服務(wù)器時,只是把業(yè)務(wù)數(shù)據(jù)在 Redis 上進(jìn)行讀寫,而沒有對數(shù)據(jù)庫進(jìn)行任何的操作,這樣就能大大提高讀寫的速度,從而滿足高速響應(yīng)的需求;但是這些緩存的數(shù)據(jù)仍然需要持久化,也就是存入數(shù)據(jù)庫之中,所以在一個請求操作完 Redis 的讀/寫之后,會去判斷該高速讀/寫的業(yè)務(wù)是否結(jié)束,這個判斷通常會在秒殺商品為0,紅包金額為0時成立,如果不成立,則不會操作數(shù)據(jù)庫;如果成立,則觸發(fā)事件將 Redis 的緩存的數(shù)據(jù)以批量的形式一次性寫入數(shù)據(jù)庫,從而完成持久化的工作。

三、AOF簡介

1、AOF持久化方式

AOF持久化方式是將redis的操作日志以追加的方式寫入磁盤文件中。AOF持久化是以日志的形式記錄服務(wù)器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細(xì)的操作記錄。

2、AOF實(shí)現(xiàn)方式

AOF(append only file)持久化是以獨(dú)立日志的方式記錄每次寫命令,重啟時再重新執(zhí)行AOF文件中命令達(dá)到恢復(fù)數(shù)據(jù)的目的。AOF的主要作用是解決了數(shù)據(jù)持久化的實(shí)時性,目前已經(jīng)是Redis持久化的主流方式。

3、AOF優(yōu)勢

該機(jī)制可以帶來更高的數(shù)據(jù)安全性,即數(shù)據(jù)持久性。Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步。

每秒同步:事實(shí)上,每秒同步也是異步完成的,其效率也是非常高的,所差的是一旦系統(tǒng)出現(xiàn)宕機(jī)現(xiàn)象,那么這一秒鐘之內(nèi)修改的數(shù)據(jù)將會丟失。每次修改:而每修改同步,我們可以將其視為同步持久化,即每次發(fā)生的數(shù)據(jù)變化都會被立即記錄到磁盤中。不同步:可以預(yù)見,這種方式在效率上是最低的。至于無同步,無需多言,我想大家都能正確的理解它。

由于該機(jī)制對日志文件的寫入操作采用的是append模式,因此在寫入過程中即使出現(xiàn)宕機(jī)現(xiàn)象,也不會破壞日志文件中已經(jīng)存在的內(nèi)容。如果我們本次操作只是寫入了一半數(shù)據(jù)就出現(xiàn)了系統(tǒng)崩潰問題,不用擔(dān)心,在Redis下一次啟動之前,我們可以通過redis-check-aof工具來幫助我們解決數(shù)據(jù)一致性的問題。

如果日志過大,Redis可以自動啟用rewrite機(jī)制,壓縮和瘦身相關(guān)的aof文件。Redis以append模式不斷的將修改數(shù)據(jù)寫入到老的磁盤文件中,同時Redis還會創(chuàng)建一個臨時的新文件用于記錄此期間有哪些修改命令被執(zhí)行。因此在進(jìn)行rewrite切換時可以更好的保證數(shù)據(jù)安全性。

延伸閱讀1:AOF重寫機(jī)制

隨著命令不斷寫入AOF,文件會越來越大,為了解決這個問題,Redis引入了AOF重寫機(jī)制壓縮文件體積。AOF文件重寫是把Redis進(jìn)程內(nèi)的數(shù)據(jù)轉(zhuǎn)化為寫命令同步到新AOF文件的過程。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(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
像愛奇藝、優(yōu)酷等視頻網(wǎng)站的數(shù)據(jù)庫是怎么設(shè)計的?

一、像愛奇藝、優(yōu)酷等視頻網(wǎng)站的數(shù)據(jù)庫是怎么設(shè)計的1、設(shè)置數(shù)據(jù)集成一般來說視頻網(wǎng)站數(shù)據(jù)庫的設(shè)計需要設(shè)置數(shù)據(jù)集成,針對于各大互聯(lián)網(wǎng)信息進(jìn)行...詳情>>

2023-10-13 15:50:12
為什么mysql中刪除某一列的主鍵索引后另一列會從少數(shù)索引變成主鍵索引?

一、為什么mysql中刪除某一列的主鍵索引后另一列會從少數(shù)索引變成主鍵索引mysql中刪除某一列的主鍵索引后另一列會從少數(shù)索引變成主鍵索引,一般...詳情>>

2023-10-13 15:48:38
Nosql與Hadoop、Voldemort、Dynamo之間關(guān)系是怎樣的?

一、Nosql與Hadoop、Voldemort、Dynamo之間關(guān)系是怎樣的Nosql是非關(guān)系數(shù)據(jù)庫。Voldemort和Dynamo都是鍵值數(shù)據(jù)庫,屬于NoSQL的一種。Hadoop是一...詳情>>

2023-10-13 15:29:43
java開發(fā)需要會什么?

一、Java基礎(chǔ)知識要成為一名合格的Java開發(fā)人員,首先需要掌握J(rèn)ava的基礎(chǔ)知識。這包括了解Java的語法、變量、數(shù)據(jù)類型、運(yùn)算符和控制流程等基本...詳情>>

2023-10-13 15:23:26
數(shù)據(jù)庫Union連接兩張表之前,怎么判斷要連接的另一張表是否存在?

一、Union連接兩張表之前,怎么判斷要連接的另一張表是否存在那你這個必須通過程序判斷 或者存儲過程去實(shí)現(xiàn),只用一條SQL是解決不了的。若是MyS...詳情>>

2023-10-13 15:20:02
快速通道
主站蜘蛛池模板: 精品中文字幕一区二区 | 国产精品久久久久久久久免费 | 国外成人在线视频 | 免费福利片2019潦草影视午夜 | 亚洲精区 | 97久久久| 亚洲视频在线观看免费 | 可以免费看黄的网站 | 亚洲精品中文字幕 | 成人av免费在线观看 | 国产在线国偷精品产拍免费观看 | 日韩精品亚洲专区在线观看 | 国产精品theporn | 综合一区在线观看 | 成人在线日韩 | 日韩久久久久久久久久久 | 国产不卡视频一区二区三区 | 国产精品1区2区 | 国产一区二区三区不卡在线观看 | 日韩色| jizz18女人高潮 | 亚洲另类视频 | 欧美一级片在线观看 | 国产主播一区 | 国产精品久久国产精品 | 欧美一区二区三区在线观看 | 毛片免费在线观看 | 亚洲一二三区不卡 | 久久综合久久久 | 日本一区二区视频 | 999免费视频 | 一级毛片视频播放 | 精品国产一区二区在线 | 国产精品www | 91在线中文字幕 | 精品国产91| 国产免费视频一区二区三区 | 国产精品一二三区 | 免费看91 | 精品一区av | av看片网|