欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【面試官】你說精通Redis?來講講Redis持久化

  • 面試官:知道Redis持久化嗎?
  • 面試官:那你說一說Redis生成RDB文件的命令是什么?
  • 面試官:是你的話,你會在什么場景使用什么命令?
  • 面試官:AOF文件生成呢?
  • 面試官:知道AOF文件重寫嗎?
  • 面試官:那照你這么說,只會保存創(chuàng)建命令,那每個鍵的創(chuàng)建只有一條命令對吧?
  • 面試官:那你說說AOF重寫過程中,有新的創(chuàng)建請求進來怎么辦?

大家好,我是南哥。

一個Java學習與進階的領路人,跟著南哥我們一起Java成長。

文章目錄

  1. Redis持久化
    1. 生成RDB文件
    2. 兩種命令的選擇
    3. 生成AOF文件
  2. AOF重寫
    1. 多條命令記錄鍵值
    2. AOF重寫緩沖區(qū)

1. Redis持久化

面試官:知道Redis持久化嗎?

Redis本身是一個基于內存的數(shù)據(jù)庫,它提供了RDB持久化、AOF持久化兩種方式,用來將存儲在內存中的數(shù)據(jù)庫狀態(tài)保存到磁盤中。前者是保存了整個Redis數(shù)據(jù)庫狀態(tài),而后者是保存了從Redis啟動后所有執(zhí)行的寫命令。接下來我們就從這兩方面展開。

1.1 生成RDB文件

面試官:那你說一說Redis生成RDB文件的命令是什么?

觸發(fā)RDB持久化過程分為手動觸發(fā)和自動觸發(fā),手動觸發(fā)的命令有兩個,一個是SAVE命令,一個是BGSAVE命令,執(zhí)行命令后會在根目錄生成名為dump.rdb的文件。

大家看下以下手動觸發(fā)的使用。

# 手動生成RDB文件指令
127.0.0.1:6379> save
OK
127.0.0.1:6379> bgsave
Background saving started

另外RDB文件是在Redis啟動時自動載入,如果把dump.rdb文件刪除,重啟Redis后會發(fā)現(xiàn)原先的數(shù)據(jù)庫狀態(tài)都不存在了。

# 初始化
127.0.0.1:6379> set name JavaGetOffer
OK
127.0.0.1:6379> get name
"JavaGetOffer"
127.0.0.1:6379> save
OK

# 重啟Redis
127.0.0.1:6379> get name
"JavaGetOffer"

# 刪除dump.rdb,重啟Redis后name為nil
127.0.0.1:6379> get name
(nil)

1.2 兩種命令的選擇

面試官:是你的話,你會在什么場景使用什么命令?

SAVE命令會阻塞Redis服務器進程,直到RDB文件創(chuàng)建完畢為止,在服務器進程阻塞期間,服務器不能處理其他任何命令請求。

而BGSAVE命令則不進行阻塞,它會派生出一個子進程,然后由子進程負責創(chuàng)建RDB文件,服務器進程繼續(xù)處理命令請求??梢栽谏厦娴闹噶钪锌吹綀?zhí)行BGSAVE指令后,終端顯示Background saving started。

所以如果在業(yè)務高峰期要使用進行RDB持久化,建議是使用后者,可以防止某些請求丟失了。

1.3 生成AOF文件

面試官:AOF文件生成呢?

AOF文件生成需要在Redis配置文件配置appendonly的屬性值。

appendonly yes

重啟Redis執(zhí)行寫命令后,會生成appendonly.aof文件。

也可以在終端手動設置appendonly屬性值。

config set appendonly yes

alt

2. AOF重寫

面試官:知道AOF文件重寫嗎?

AOF文件是AOF持久化的產物,AOF持久化通過保存服務器所有執(zhí)行的寫命令來記錄數(shù)據(jù)庫狀態(tài)。而AOF文件重寫主要是為了解決AOF文件體積膨脹的問題。

對于一個鍵值對,AOF舊的文件會保存數(shù)十條對該鍵值對的修改命令,這樣浪費了大量內存空間。

而AOF文件重寫可以創(chuàng)建一個新的AOF文件來替代現(xiàn)有的AOF文件,新舊兩個AOF文件所保存的數(shù)據(jù)庫狀態(tài)相同,但新AOF文件不會包含任何浪費空間的冗余命令,使得新的AOF文件體積很小。

簡單來說,就是新的AOF文件只會保存鍵值對的最終狀態(tài)的創(chuàng)建命令。

2.1 多條命令記錄鍵值

面試官:那照你這么說,只會保存創(chuàng)建命令,那每個鍵的創(chuàng)建只有一條命令對吧?

如果每個鍵的創(chuàng)建只有一條命令,在執(zhí)行命令時可能會造成客戶端輸入緩沖區(qū)溢出。

Redis重寫程序在處理列表、哈希表、集合、有序集合這四種可能會帶有多個元素的鍵時,如果元素的數(shù)量超過了redis.h/REDIS_AOF_REWRITE_ITEMS_PER_CMD常量的值,那么重寫程序將使用多條命令來記錄鍵的值,而不單單只使用一條命令。

2.2 AOF重寫緩沖區(qū)

面試官:那你說說AOF重寫過程中,有新的創(chuàng)建請求進來怎么辦?

可以把這些新的創(chuàng)建請求寫入到一個緩沖區(qū)里。

Redis服務器會維護一個AOF重寫緩沖區(qū),該緩沖區(qū)會在子進程創(chuàng)建新AOF文件期間,記錄服務器執(zhí)行的所有寫命令。

等新的AOF文件創(chuàng)建完成,Redis服務器會將重寫緩沖區(qū)中的所有內容追加到新AOF文件的末尾,從而保證兩個新舊AOF文件狀態(tài)一致。

alt

最后,評論區(qū)說它好孤獨的?。∷枰銈兊耐虏?。關于Java技術、牛友的迷茫、簡歷等問題來評論區(qū)和南哥、牛油們一起吐槽分析分析。

創(chuàng)作不易,不妨點贊、收藏、關注支持一下,各位的支持就是我創(chuàng)作的最大動力????

#Redis##Java##面試##大廠面試#
Java面試突擊 文章被收錄于專欄

??以面試官面試的形式,涵蓋了你怒懟大廠面試官、拿下大廠面試所需掌握的核心知識、面試重點! ??相信一定對你順利通關面試、拿到理想Offer有所幫助! ??花費大量精力去制作本專欄,創(chuàng)作不易,各位的支持就是我創(chuàng)作的最大動力!

全部評論

相關推薦

03-19 10:07
已編輯
廣東藥科大學 golang
Yki_:你倒是進一個面啊
點贊 評論 收藏
分享
評論
10
36
分享

創(chuàng)作者周榜

更多
牛客網
??推髽I(yè)服務