【小資說庫】第13期 應用程序開發人員、DBA和DBMS開發人員的分工是怎樣的?
933
2022-05-28
前言
前面我們介紹了Redis數據庫以及鍵空間。這一篇我們繼續介紹一下Redis的持久化。Redis持久化的方式有兩種,一種是RDB的方式,一種是AOF的方式。
RDB的方式
RDB是Redis DataBase的縮寫。是Redis默認的持久化方式,它按照一定的時間將內存的數據以快照的形式保存到硬盤中,對應產生的數據文件是dump.rdb。通過配置文件中的save參數可以定義快照的周期。我們可以在 redis.conf配置文件中找到相關的配置,配置如下所示:
# In the example below the behaviour will be to save: # after 900 sec (15 min) if at least 1 key changed # after 300 sec (5 min) if at least 10 keys changed # after 60 sec if at least 10000 keys changed save 900 1 save 300 10 save 60 10000 # RDB 持久化文件 dbfilename "dump.rdb" # Note that you must specify a directory here, not a file name. dir "/srv/redis/redis-6379"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
默認的快照保存規則是,滿足如下三個條件中的一條即可:
15分鐘內至少有1個key改變
5分鐘內至少有10個key改變
1分鐘內至少有10000個key改變
就會觸發save命令,對快照進行保存。保存快照是通過一個單獨的進程來進行保存的。
優點
只有一個文件dump.rdb,方便持久化
容災性好,一個文件可以安全地保存到磁盤。
性能最大化,fork子進程來完成寫操作,讓主進程繼續處理命令,所以是IO最大化,使用單獨子進程進行持久化,主進程不會進行任何IO操作,保證了Redis的高性能。
相對于數據集大時,比AOF的持久化效率更高。
缺點
數據安全性低,RDB是間隔一段時間進行持久化的,如果持久化之間Redis發生故障,會發生數據丟失,所以這種方式更適合數據要求不嚴謹的時候。
AOF持久化
AOF持久化,則是將Redis執行的每次寫命令記錄到單獨的日志文件中,當重啟Redis會重新從持久化的日志文件中恢復數據。默認的話是不啟動AOF持久化的,并且默認的aof文件名是appendonly.aof。讓我們來看看 redsis.conf配置文件中的默認配置:
#默認不開啟aof備份 appendonly no # The name of the append only file (default: "appendonly.aof") #默認的aof日志文件名是appendonly.aof appendfilename "appendonly.aof" # If unsure, use "everysec". #默認的每秒備份一次 # appendfsync always appendfsync everysec # appendfsync no
1
2
3
4
5
6
7
8
9
10
11
12
如上所示:與aof備份相關的主要有三個配置,appendonly 配置用于指定是否開啟aof備份,no的話表示不開啟,yes的話表示開啟。appendfilename配置用于指定aof日志文件名,這個一般不用改。appendfsync表示備份方式,其中:
always方式表示一寫命令就備份一次雖然安全,系統性能會降低,不推薦使用。
everysec方式表示每一秒鐘就備份一次,不管一秒鐘變化了多少key,只備份一次,性能得到了一定的保護,推薦使用。
no方式會查看當前服務器狀態,如果狀態良好,就進行備份(隨機)。這種備份方式數據安全是沒有保證的。
三種備份方式
性能上: always 數據安全上:always 在實際的生產中,我們應該同時使用兩種持久化方式,一般情況下,當Redis重啟的時候會優先載入aof文件來恢復原始的數據。 Redis 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。