Redis windows学习(二)——Redis持久化的AOF模式和RDB模式
AOF和RDB是什么
Redis進行操作時,有兩種方式將操作的結果保存下來。一種是將結果以快照的方式保存在二進制文件中(默認叫:dump.rdb* ),這就是RDB模式,另一種是將操作的命令追加到一個記錄文件里(默認叫:appendonly.aof),然后通過重新執行這些命令來重建數據庫。通常,不用修改這些,按默認的來就好了,但是,了解一下還是有好處的,說不定面試就問這個呢?
RDB模式
在redis里,默認使用RDB模式。因為RDB模式重建數據庫比較快。
這里的 重建數據庫 是指將數據從硬盤移到內存,并建立起數據庫的過程。對于RDB模式來說,就是把 dump.rdb 文件加載到內存,并解壓字符串,就建立起了數據庫。而對于AOF模式來說,則是在啟動Redis服務器的時候,運行appendonly.aof日志文件,在內存中重新建立數據庫。從這里的描述就可以看出,AOF的重建過程是要比RDB慢的。
使用RDB模式的話,系統會將內存中數據庫的快照每隔一段時間間隔更新到硬盤中(dump.rdb 文件里),這個更新的頻率是可以指定的。在redis.conf中有三個配置用來指定內存數據更新到硬盤的頻率:
//格式是:save <seconds> <changes> save 900 1 //如果僅有1-9次更改操作,那么要900s才寫入硬盤一次 save 300 10 //如果僅有10-9999次更改操作,那么要300s才寫入硬盤一次 save 60 10000 //如果超過10000次更改操作,那么60s才會寫入硬盤一次900s,也就是15分鐘,300s,就是5分鐘。這個時間挺長的,這正是RDB模式的缺點所在——如果服務器宕機的話,可能會造成最后幾分鐘,保存在內存中還來不及刷入硬盤的數據丟失。如果數據很重要那就慘了。
但是,如果數據不是那么重要,丟失幾分鐘數據也沒什么關系,那么RDB模式是最好的選擇。
AOF模式
使用AOF模式是將操作日志記在appendonly.aof 文件里,每次啟動服務器就會運行appendonly.aof 里的命令重新建立數據庫。因為要重新運行命令,所以appendonly.aof 是比較慢的。所以,默認AOF模式是關閉的。你可以在redis.conf 文件里配置,使用appendonly yes 打開AOF模式。
AOF模式有三種追加到appendonly.aof 的方式,用來指定什么時機可以將操作日志追加到appendonly.aof 文件里。它們分別是:
| always | 每次執行寫操作時都將操作記錄追加到日志,安全,但比較慢 |
| everysec | 每秒鐘將操作記錄追加到日志,系統默認的方式,是一種權衡折衷,通常這種方式會比較好 |
| no | 讓操作系統去決定什么時候追加,也許當操作系統有空的時候,速度快 |
相較于RDB,AOF模式是比較安全的,即使服務器宕機,丟失的數據也最多是一秒兩秒的。所以,如果數據對安全性要求很高,那么用AOF吧。
另外,你可以同時指定這兩種方式,運行的時候,它們各自按自己的方式辦事,不沖突。但是啟動的時候,是按AOF模式啟動的,也就是運行appendonly.aof 文件。
這些東西,都是從redis.conf搬出來的,推薦去看一下,文件也不長,一共才490行,可以體會一下原汁原味的知識。
AOF模式和RDB模式對比
RDB使用快照的方式進行持久化,這種方式生成的文件結構比較緊密,比較節省空間,而且恢復恢復的時候比AOF文件快。但是因為要做快照,這種方式對redis服務影響較大,所以生成RDB的頻率不會太快,一般幾分鐘才做一次,所以服務器宕機的話,可能會丟失幾分鐘的信息。
AOF使用日志的方式進行持久化,這種方式生成的文件較大,恢復的時候也較慢,但是對redis服務影響較小,所以刷新AOF文件的頻率可以較快,一般都是秒級別的,若服務器宕機,丟失的數據也少。
總結
以上是生活随笔為你收集整理的Redis windows学习(二)——Redis持久化的AOF模式和RDB模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库存储过程及调用方法
- 下一篇: mysql 存储过程中limit