Redis第二天學習筆記

2021-10-09 07:26:19 字數 2581 閱讀 9573

redis官方提供了兩種不同的持久化方法來將資料儲存到硬碟裡面,分別是:

特點

這種方式可以將某一時刻的所有資料都寫入硬碟中,當然這也是redis的預設開啟持久化方式,儲存的檔案是以.rdb形式結尾的檔案,因此這種方式也稱之為rdb方式。

快照生成方式

配置生成快照名稱和位置

在redis.conf中進行設定:

特點

這種方式可以將所有客戶端執行的寫命令記錄到日誌檔案中,aof持久化會將被執行的寫命令寫到aof的檔案末尾,以此來記錄資料發生的變化,因此只要redis從頭到尾執行一次aof檔案所包含的所有寫命令,就可以恢復aof檔案的記錄的資料集。

開啟aof持久化

在redis的預設配置中aof持久化機制是沒有開啟的,需要在配置中開啟。

日誌追加頻率

always【謹慎使用】

說明:每個redis寫命令都要同步寫入硬碟,嚴重降低redis速度。

解釋:如果使用者使用了always選項,那麼每個redis寫命令都會被寫入硬碟,從而將發生系統崩潰時出現的資料丟失減到最少,遺憾的是,因為這種同步策略需要對硬碟進行大量的寫入操作,所以redis處理命令的速度會受到硬碟效能的限制。

注意:轉盤式硬碟在這種頻率下200左右個命令/s , 固態硬碟(ssd) 幾百萬個命令/s。

警告:使用ssd使用者請謹慎使用always選項,這種模式不斷寫入少量資料的做法有可能會引發嚴重的寫入放大問題,導致將固態硬碟的壽命從原來的幾年降低為幾個月。

解釋:為了兼顧資料安全和寫入效能,使用者可以考慮使用everysec選項,讓redis每秒一次的頻率對aof檔案進行同步,redis每秒同步一次aof檔案時效能和不使用任何持久化特性時的效能相差無幾,而通過每秒同步一次aof檔案,redis可以保證,即使系統崩潰,使用者最多丟失一秒之內產生的資料。

解釋:最後使用no選項,將完全有作業系統決定什麼時候同步aof日誌檔案,這個選項不會對redis效能帶來影響但是系統崩潰時,會丟失不定數量的資料,另外如果使用者硬碟處理寫入操作不夠快的話,當緩衝區被等待寫入硬碟資料填滿時,redis會處於阻塞狀態,並導致redis的處理命令請求的速度變慢。

aof帶來的問題

aof的方式也同時帶來了另乙個問題。持久化檔案會變的越來越大。例如我們呼叫incr test命令100次,檔案中必須儲存全部的100條命令,其實有99條都是多餘的。因為要恢復資料庫的狀態其實檔案中儲存一條set test 100就夠了。為了壓縮aof的持久化檔案redis提供了aof重寫(rewriter)機制。

aof重寫

用來在一定程度上減小aof檔案的體積。

觸發重寫方式

客戶端方式觸發重寫

執行bgrewriteaof命令,不會阻塞redis的服務。

伺服器配置方式自動觸發

配置redis.conf中的auto-aof-rewrite-percentage選項。

如果設定auto-aof-rewrite-percentage值為100和auto-aof-rewrite-min-size 64mb,並且啟用的aof持久化時,那麼當aof檔案體積大於64m,並且aof檔案的體積比上一次重寫之後體積大了至少一倍(100%)時,會自動觸發,如果重寫過於頻繁,使用者可以考慮將auto-aof-rewrite-percentage設定為更大。

重寫原理

重寫aof檔案的操作,並沒有讀取舊的aof檔案,而是將整個記憶體中資料庫內容用命令的方式重寫了乙個新的aof檔案,替換原有的檔案,這點和快照有點類似。

重寫流程

兩種持久化方案既可以同時使用(aof),又可以單獨使用,在某種情況下也可以都不使用,具體使用那種持久化方案取決於使用者的資料和應用決定。

無論使用aof還是快照機制持久化,將資料持久化到硬碟都是有必要的,除了持久化外,使用者還應該對持久化的檔案進行備份(最好備份在多個不同地方)。

Redis學習第二天

redis的資料型別 掌握 啟動後知識串講 1.單程序單執行緒 2.預設16個兄弟一起站台 預設16個資料庫,類似陣列下表從零開始,初始預設使用零號庫 3.切換資料庫命令select index index表示資料庫的索引,從0開始,命令切換資料庫 4.常用基本命令dbsize 檢視的當前資料庫的k...

Redis學習第二天

而鍊錶的優點就是對於鍊錶中的元素的增刪,效率極高。使用環境 1.做大資料集合的增刪 2.任務佇列 使用者任務佇列 list命令 取值 lrange key start end 獲取鍊錶從start到end的元素的值,start end從0記數 也可以為負數,若為 1則表示鍊錶尾部的元素,以此類推。兩...

學習第二天筆記

所有識別符號都應該以字母 a z或者a z 美元符號 或者下劃線 開始。首字元之後可以是字母 a z或者a z 美元符號 或者下劃線 或數字的任何字元組合。不能使用關鍵字作為變數名或者方法名。識別符號是大小寫敏感的。合法識別符號舉例 age salary value 1 value 非法識別符號舉例...