Redis的RDB文件與AOF文件

本筆記參考《Redis設計與實現》 P118 ~ P150

RDB文件

1、RDB文件用于保存和還原Redis服務器所有數據庫中的所有鍵值對數據
2、SAVE命令由服務器進程直接執行保存操作,該命令會阻塞服務器
3、BGSAVE命令由子進程執行保存操作,不會阻塞服務器
注意此時服務器的狀態:在處理BGSAVE命令時,服務器處理SAVEBGSAVEBGREWRITEAOF三個命令方式與平時不同。

  • 客戶端發送的SAVE命令會被服務器拒絕,服務器禁止SAVE命令與BGSAVE同時執行,是為了避免父進程與子進程同時執行rdbSave調用,產生競爭條件。
  • 客戶端發送的BGSAVE命令也會被服務器拒絕,因為同時執行兩個BGSAVE也會產生競爭條件。
  • 最后:BGSAVEBGREWRITEAOF不能同時執行:因為兩個命令實際工作都是由子進程執行,所以兩個命令在操作方面沒有沖突,但是并發出兩個子進程,并且兩個子進程都是同時執行大量的磁盤寫入操作的話不是個好主意。

4、服務器狀態中會保存所有用save選項設置的保存條件,當任意一個保存條件被滿足,服務器自動執行BGSAVE
5、RDB文件時一個經過壓縮的二進制文件,由多個部分組成
6、對于不同類型的鍵值對,RDB文件會使用不同方式保存

AOF文件

1、APF文件通過保存所有修改數據庫的寫命令請求來記錄服務器的數據庫狀態
2、AOF文件中的所有命令都是以Redis命令請求協議的格式保存的
3、命令請求會先保存到AOF緩沖區中,之后再定期寫入并同步到AOF文件
4、appendfsync選項的不同值對于AOF持久化功能的安全性以及Redis服務器的性能有很大影響

  • appendfsync的值為always時,服務器在每個事件循環都要將aof_buf緩沖區中的所有內容寫到AOF文件中,并且同步AOF文件,所以always的效率最慢,但安全性最強,出現故障,AOF持久化也只會丟失一個事件循環中所產生的命令數據
  • appendfsync的值為everysec時,服務器在每個事件循環都要將aof_buf緩沖區中的所有內容寫入到AOF文件,并且每隔一秒就要在子線程中對AOF文件進行一次同步。效率足夠快,出現故障也只會丟失一秒鐘的命令數據
  • appendfsync的值為no時,服務器在每個事件循環都要將aof_buf緩沖區中的所有內容寫入到AOF文件中,何是同步由操作系統控制。該模式下的AOF文件寫入速度最快,因為緩存了足夠多的數據,但是出現故障會丟失上次同步AOF之后的所有寫命令數據

5、服務器只要載入并重新執行保存在AOF文件中的命令,就可以還原數據庫本來的狀態(通過創建一個不帶網絡連接的偽客戶端)
6、AOF重寫可以產生一個新的AOF文件,新文件與原有文件所保存的數據庫狀態一樣,但是體積更小
7、AOF重寫的功能時通過讀取數據庫中的鍵值對來實現的,程序無須對現有AOF文件進行任何讀入、分析或者寫入操作
8、執行BGREWRITEAOF命令時,Redis服務器會維護一個AOF重寫緩沖區,該緩沖區會在子進程創建新AOF文件期間,記錄服務器執行的所有寫命令。當子進程完成創建新AOF文件的工作之后,服務器會將重寫緩沖區中的所有內容追加到新AOF文件的末尾,使得新舊兩個AOF文件所保存的數據庫狀態一致。最后,服務器用新的AOF文件替換掉舊AOF文件,完成文件重寫操作

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eclipse擴容

eclipse擴容 -vmD:/jdk-6u17-windows-i586/jdk1.6.0_17/bin/javaw.exe-startupplugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar-nlen_US--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120913-144807-productorg.eclipse…

node oauth2驗證_如何設置和使用護照OAuth Facebook身份驗證(第2部分)| Node.js

node oauth2驗證In my last article (How to set up and use passport OAuth Facebook Authentication (Section 1) | Node.js), we looked at another form of authentication called the OAuth authentication which involves sign in or signup using social media. 在我的上…

Python and Microsoft Word

國外網站看到的文章:Accessing Microsoft Word with Python follows the same syntax that we used for Excel. Let’s take a quick look at how to access Word.from time import sleep import win32com.client as win32RANGE range(3, 8)def word():word win32…

東哥讀書小記 之 《一個廣告人的自白》

掰著指頭一算,端午假期確實完成不少事情,過的太尼瑪充實鳥:去健身房2小時,且老夫的平板支撐終于能堅持超過1分鐘,普大喜奔有木有;給合租的室友買蛋糕過了個生日;去 去哪兒 參加W3ctech的技術交流…

Redis的文件事件與時間事件處理

目錄文件事件處理事件類型客戶端和服務端的通信過程時間事件處理執行器執行周期性事件作用事件的調度與執行文件事件處理 Redis基于Reactor模式開發了文件事件處理器。文件事件處理器以單線程方式運行,通過IO多路復用程序監聽多個套接字,實現了高性能網…

fisher-yates_使用Fisher-Yates隨機播放算法以O(n)時間隨機播放給定數組

fisher-yatesExample: 例: Say the input array is [1, 2 3, 4, 5 6, 7]After reshuffling it can be anything like[4, 3, 7, 2, 1, 5, 1]Our goal is that the reshuffling should be as random as possible. 我們的目標是,改組應盡可能地隨機。 The…

[分享]一些在 WPF/Silverlight 中應用 MVVM 模式時可能會有點用途的代碼

想來這個博客也已經有很久沒更新過了,新年新氣象,現在就開始寫新內容吧。 最初的起因 在最近的幾個月中我做的開發總是要跟 XAML 打交道,也就是 WPF 啊,Silverlight 啊,WF 啊這些。 在進行 WPF 和 Silverlight 開發的…

手機調用系統的拍照和裁剪功能,假設界面有輸入框EditText,在一些手機會出現點擊EditText會彈出輸入法,卻不能輸入的情況。...

1、拍照裁剪后 點擊EditText會彈出輸入法,卻不能輸入。可是點擊點一EdtiText就能夠輸入了,所以我就寫了一個看不見的EdtiText,切換焦點,這樣就攻克了這個奇怪的這問題,應該是android內部的問題。 這是網絡一個牛人留下…

Redis一個命令請求從發送到完成的步驟以及初始化服務器步驟

一個命令請求從發送到完成的步驟 如下: 1、客戶端將命令請求發送給服務器 當用戶在客戶端中鍵入一個命令請求時,客戶端會將這個命令請求轉換成協議格式,然后通過連接到服務器的套接字,將協議格式的命令請求發送給服務器。 2、服…

c打印行號和函數_使用C中的函數名稱,行號從任何函數打印錯誤消息

c打印行號和函數Sometimes, it is necessary to print some message on logic failure or anytime with the function name and line number, so that program can be debugged and fixed the issue. 有時,有必要在邏輯故障時或在任何時候使用功能名稱和行??號打印…

Linux SPI框架

水平有限,描述不當之處還請指出,轉載請注明出處http://blog.csdn.net/vanbreaker/article/details/7733476 Linux的SPI子系統采用主機驅動和外設驅動分離的思想,首先主機SPI控制器是一種平臺設備,因此它以platform的方式注冊進內…

dbms標識符無效_DBMS中的嵌套查詢,相關的嵌套查詢和集合比較運算符

dbms標識符無效嵌套查詢 (Nested Queries) A query embedded in a query. This type of relation is termed as Nested Query and the Embedded Query is termed as a subquery. 查詢中嵌入的查詢。 這種類型的關系稱為嵌套查詢,而嵌入式查詢稱為子查詢。 For exam…

重構——解決過長參數列表(long parameter list)

目錄1、Replace Param with Query2、Preserve Whole Object3、Introduce Param Object4、Remove Flag Argument5、Combine Functions into ClassReference當我們需要在超長函數中提煉子函數時,如果函數內有大量的參數和臨時變量,這將會對函數的提煉形成很…

C# 點點滴滴: out和ref

用c#很長一段時間了,不過基本是啥都不會,當C用的,作為寫單片機的,還是真心覺得C比較親切,呵呵。 不過總是要進步啊,慢慢積累唄,這次是寫一個CAN的上位機模板出來,以后的項目就要徹底…

css控制圖片最寬 最高值

.content img{width:expression_r(this.width > 500 && this.height < this.width ? 500:true);max-width:500px;height:expression_r(this.height >500 ? 500:true);max-height:500px; }轉載于:https://www.cnblogs.com/panlin/archive/2013/01/06/2848017…

踩踩踩

http://china.findlaw.cn/laodongfa/ctjg/cy/cybc/ 二、合法裁員經濟補償標準的計算 按照《勞動合同法》第四十七條規定&#xff0c;經濟補償按勞動者在本單位工作的年限&#xff0c;每滿一年支付一個月工資的標準向勞動者支付。六個月以上不滿一年的&#xff0c;按一年計算;不…

c# 字節十六進制轉十進制_用C中的十進制,八進制和十六進制數字初始化字節數組...

c# 字節十六進制轉十進制C中的字節數組 (byte array in C) In C programming language, an unsigned char type can be used to declare byte array in C programming language. An unsigned char can contain a value from 0 to 255, which is the value of a byte. 在C編程語…

從uptime、stress、mpstat、pidstat觀察CPU密集型、IO密集型、進程密集型切換的系統性能

uptime dyydyy-Lenovo-ThinkBook-14-IIL:~$ uptime10:27:10 up 7 min, 1 user, load average: 1.32, 0.99, 0.49結果分別對應&#xff1a;當前時間、系統運行時間、當前用戶數目、過去 1 分鐘、5 分鐘、15 分鐘的平均負載(Load Average) 平均負載是指單位時間內&#xff0c…

解析和創建xml

http://www.cnblogs.com/Li-Cheng/p/3610474.html 轉載于:https://www.cnblogs.com/mxw272618/p/3769900.html

python - VirtualEnv virtualenvwrapper

VirtualEnv 是什么 VirtualEnv用于在一臺機器上創建多個獨立的python運行環境&#xff0c;VirtualEnvWrapper為前者提供了一些便利的命令行上的封裝。 為什么要用 - 隔離項目之間的第三方包依賴&#xff0c;如A項目依賴django1.2.5&#xff0c;B項目依賴django1.3。- 為部署應用…