學習Redis之前,我還是覺得我務必跟你說一聲,也是在我文章之中說的很多的一句話,我想也會適用于學習Redis,那就是在接觸文章里的Reids命令時,不用試圖去記這些命令 ,用到時去看API幫助檔案即可;會用了或者實踐過了再去了解也不會遲,
上手Redis系列
上手Redis必知必會:最基礎知識點和最基本常用操作
上手Redis系列(一):超全String字串型別詳解
上手Redis系列(二):超全List串列型別詳解(代碼圖文示例)
上手Redis系列(三):超全集合Set型別詳解(代碼圖文示例)
上手Redis系列(四):超全哈希Hash型別詳解(代碼圖文示例)
上手Redis系列(五):超全有序集合Zset型別詳解
上手Redis系列(六):超全Geospatial特殊型別詳解(地理位置)
上手Redis系列(七):超全HyperLogLog特殊型別詳解
上手Redis系列(八):Bitmaps特殊型別詳解
上手Redis系列(九):事務操作
一、為什么reids要使用持久化
Redis 是基于記憶體的資料庫,如果記憶體中的資料不保存到磁盤,那么一旦因行程退出就會造成資料丟失的問題,所以當下次重啟還可以恢復資料,Redis 提供了持久化機制來確保資料不丟失,
如果有好奇的小伙伴想跑去嘗試看看在Redis中存資料后是不是斷電及失的,多半要失望了,
為啥?
不要問,因為我試過了資料還在!
重啟過后資料依然在,是因為Redis中的持久化機制,redis默認開啟 RDB(這個下面會詳解講,放心),重啟的時候會將資料匯入 .rdb 檔案,當然配置了持久化機制 AOF(下面也會講滴),也會產生相應檔案,那么redis會選擇將資料匯入到這個檔案,
二、Redis中的 RDB 持久化機制
2.1 什么是 RDB
RDB(Reids DataBase) 在指定時間內將記憶體中的資料集Snapshot快照(針對記憶體進行的快速讀取技術)寫入磁盤,恢復時將快照檔案讀到記憶體里,
在上面已經說過,RDB 保存的檔案是 dump.rdb,

2.2 指定Snapshot觸發規則
如果你只是只求理解Redis的 RDB 那么下面 2.2指定Snapshot觸發規則的在修改redis.config檔案如果你不操作,那么難免會枯燥,你可以選擇跳過,(學你想學,保持對知識的熱度很重要)
上面讓我們知道了 RDB 是通過快照的方式來指定在時間間隔內持久化到dump.rdb的,但是不知道的是如何觸發持久化的?
知識要知其然,也要知其所以然,
可以通過修改redis.conf來組態檔指定觸發規則,
save s(秒) num(觸發次數)
來解釋一下圖中第一段 save 900 1 ,900是秒,那么后面的 1 就是在900秒內修改1次key就會觸發RDB機制,(900s秒換成分鐘min就是15分鐘內修改1次key就觸發RDB機制)
后面第二、三段以此類推如此,

我們先把原有的注釋來玩我們自己的!
把觸發策略改成 120秒內修改6次key觸發RDB,

改好之后保存!
然后來看一下默認中有的dump.rdb

把dump.rdb洗掉
可以看到已經用 rm -rf 洗掉了dump.rdb

然后我們在reids中設定6個引數,

再次查看會發現出現了dump.rdb檔案,

我們可以來關閉redis行程看看,資料是否還在,

再次啟用redis發現已經斷開連接,

再次連接查看資料依然存在,

除了redis.config中的save觸發RDB操作,其實shutdown本身也是會觸發RDB機制的,
再次洗掉dump.rdb

添加值

shutdown后可以發現已經生成dump.rdb檔案,

還有第三種觸發RDB操作,就是使用 flushall

再次觸發RDB操作,生成dump.rdb檔案,

2.3 三種觸發RDB機制
結合上面的測驗,我們知道有以下三種觸發RDB機制:
- save的規則滿足條件會自動觸發RDB機制
- shutdown退出redis,觸發RDB機制,生成rdb檔案,
- 使用flushdb命令觸發RDB機制,
以上觸發RDB機制,其實就是備份!
備份的形式就是會自動的生成一個dump.rdb檔案
三、RDB檔案恢復
rdb的檔案恢復非常簡單,只需要將rdb檔案放在redis的啟動目錄即可,redis在啟動的時候會自動檢查dump.rdb 然后恢復其中的資料,
四、RDB優勢和劣勢
優勢:
- RDB因為只有一個檔案且內容緊湊,所以適合進行備份和災難恢復,
- RDB檔案需要保持整個資料集,所以適合大規模資料恢復,
- 恢復資料比AOP(AOP在系列十一詳解)的速度快,
劣勢:
- 需要時間間隔行程操作,一旦發送故障,redis意外宕機,可能會丟失資料,
- RDB每次保存的時候,fork()出的一個子行程會占用內容空間,所以會耗時,
五、最后
最后的最后,為了更好的閱讀體驗,我把想說的話都放在了下面,嘿嘿,
我是一顆剽悍的種子 把我會的,認真的分享 是我寫博客一直不變的信條,
如果你能看到這篇博文,說明咱們還是很有緣的;希望能帶給你一些許幫助,創作的不易, 把我文章的知識帶走,你的三連留下,點贊,評論,關注,是我最大的動力,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/203261.html
標籤:其他
上一篇:2020-11-04第一篇博客
下一篇:token的生成原理 使用方法!
