Redis單機數(shù)據(jù)庫的實現(xiàn)

數(shù)據(jù)庫

redis默認(rèn)會創(chuàng)建16個數(shù)據(jù)庫;
刪除過期鍵有三種策略:

  • 定時刪除:對某個鍵設(shè)置過期時間,時間一到就刪除鍵;
  • 惰性刪除:查詢的時候,判斷是否過期,沒過期返回,過期就刪除;
  • 定期刪除:隔一段時間對數(shù)據(jù)庫里的所有過期數(shù)據(jù)進(jìn)行清除;

持久化

RDB

  • 將某個時間點的所有數(shù)據(jù)都存放到硬盤上。
  • 可以將快照復(fù)制到其它服務(wù)器從而創(chuàng)建具有相同數(shù)據(jù)h 的服務(wù)器副本。
  • 如果系統(tǒng)發(fā)生故障,將會丟失最后一次創(chuàng)建快照之后的數(shù)據(jù)。
  • 如果數(shù)據(jù)量很大,保存快照的時間會很長。

AOF

將寫命令添加到 AOF 文件(Append Only File)的末尾。
使用 AOF 持久化需要設(shè)置同步選項,從而確保寫命令同步到磁盤文件上的時機。這是因為對文件進(jìn)行寫入并不會馬上將內(nèi)容同步到磁盤上,而是先存儲到緩沖區(qū),然后由操作系統(tǒng)決定什么時候同步到磁盤。有以下同步選項:

選項 同步頻率
always 每個寫命令都同步
everysec 每秒同步一次
no 讓操作系統(tǒng)來決定何時同步
  • always 選項會嚴(yán)重減低服務(wù)器的性能;
  • everysec 選項比較合適,可以保證系統(tǒng)崩潰時只會丟失一秒左右的數(shù)據(jù),并且 Redis 每秒執(zhí)行一次同步對服務(wù)器性能幾乎沒有任何影響;
  • no 選項并不能給服務(wù)器性能帶來多大的提升,而且也會增加系統(tǒng)崩潰時數(shù)據(jù)丟失的數(shù)量。
    隨著服務(wù)器寫請求的增多,AOF 文件會越來越大。Redis 提供了一種將 AOF 重寫的特性,能夠去除 AOF 文件中的冗余寫命令。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容