大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 進(jìn)階學(xué)習(xí)的redis常見面試題匯總

進(jìn)階學(xué)習(xí)的redis常見面試題匯總

更新時(shí)間:2022-12-30 11:43:03 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1544次

很多大廠都在使用redis,所以今天小編當(dāng)作搬運(yùn)工,為大家整理了一份Redis面試題,合計(jì)了10個(gè)題目,還算是比較全,題目涵蓋基礎(chǔ)題和高級題。希望對各位讀者有所幫助,祝大家前程似錦。

redis常見面試題

什么是 Redis?

Redis全稱為Remote Dictionary Server,它是現(xiàn)在最受歡迎的、完全開源免費(fèi)的、遵守 BSD 協(xié)議的NoSQL數(shù)據(jù)庫之一,它是一個(gè)使用ANSI C編寫的開源、包含多種數(shù)據(jù)結(jié)構(gòu)、支持網(wǎng)絡(luò)、基于內(nèi)存、可選持久性的鍵值對存儲數(shù)據(jù)庫,其具備如下特性:

①基于內(nèi)存運(yùn)行,性能高效;

②支持分布式,理論上可以無限擴(kuò)展;

③支持?jǐn)?shù)據(jù)持久化,重啟的時(shí)候可以再次加載進(jìn)行使用;

④支持五種數(shù)據(jù)類型和數(shù)據(jù)備份。

相比于其它數(shù)據(jù)庫類型,Redis具備的特點(diǎn)是:

  • C/S通訊模型;
  • 單進(jìn)程單線程模型;
  • 豐富的數(shù)據(jù)類型;
  • 操作具有原子性;
  • 數(shù)據(jù)持久化;
  • 高并發(fā)讀寫;
  • 支持lua腳本。

Redis 支持的常見五種數(shù)據(jù)類型:string(字符串),hash(哈希),list(列表),set(集合)及 zset(sorted set,有序集合)。項(xiàng)目中比較常用的是 string和hash, 如果你是 Redis 高級用戶,還需要加上下面幾種數(shù)據(jù)結(jié)構(gòu) :HyperLogLog、Geo、Pub/Sub。如果你說還玩過 Redis Module,像 BloomFilter(布隆過濾器),RedisSearch,Redis-ML,面試官得眼睛就開始發(fā)亮了。

Redis 與其它 key-value 存儲有什么不同?

答:(1)Redis 有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對它們的原子性操作,這是一個(gè)不同于其它數(shù)據(jù)庫的進(jìn)化路徑。Redis 的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的,同時(shí)對程序員透明,無需進(jìn)行額外的抽象。

(2)Redis 運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對不同數(shù)據(jù)集進(jìn)行高速讀寫時(shí)需要權(quán)衡內(nèi)存,因?yàn)閿?shù)據(jù)量不能大于硬件內(nèi)存。在內(nèi)存數(shù)據(jù)庫方面的另一個(gè)優(yōu)點(diǎn)是,相比在磁盤上相同復(fù)雜度的數(shù)據(jù)結(jié)構(gòu),在內(nèi)存中操作起來非常簡單,這樣 Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。同時(shí),在磁盤存儲格式方面它們是緊湊的、以追加的方式產(chǎn)生的,因?yàn)樗鼈儾⒉恍枰M(jìn)行隨機(jī)訪問。

使用 Redis 有哪些好處或者優(yōu)勢?

(1)性能極高。它讀的速度是 11萬次/s,寫的速度是 8萬次/s。因?yàn)閿?shù)據(jù)存在內(nèi)存中,而且是單進(jìn)程單線程IO多路復(fù)用,沒有創(chuàng)建和銷毀線程的開銷。

(2)豐富的數(shù)據(jù)類型。

(3)原子性。Redis 的所有操作都是原子性的,多個(gè)操作也支持事務(wù),即通過 MULTI 和 EXEC指令包起來。

(4)豐富的特性。它還支持 publish/subscribe,緩存,通知和key過期等特性。

Redis 相比 Memcached 有哪些優(yōu)勢?

(1)Memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數(shù)據(jù)類。

(2)Redis 的速度比 Memcached 快。

(3)Redis 可以持久化數(shù)據(jù)。

Memcache 與 Redis 的區(qū)別都有哪些?

(1)存儲方式 Memecache 把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會(huì)掛掉,數(shù)據(jù)不能超過內(nèi)存大小。 Redis 有部分存在硬盤上,這樣能保證數(shù)據(jù)的持久性。

(2)數(shù)據(jù)支持類型 Memcache 對數(shù)據(jù)類型支持相對簡單,而Redis 有復(fù)雜的數(shù)據(jù)類型。

(3)使用底層模型不同 它們之間底層實(shí)現(xiàn)方式以及與客戶端之間通信的應(yīng)用協(xié)議不一樣。 Redis 直接自己構(gòu)建了 VM 機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會(huì)浪費(fèi)一定的時(shí)間去移動(dòng)和請求。

Redis 是單進(jìn)程單線程的?

答:Redis 是單進(jìn)程單線程的,redis 利用隊(duì)列技術(shù)將并發(fā)訪問變?yōu)榇性L問,消除了傳統(tǒng)數(shù)據(jù)庫串行控制的開銷。

Redis 的持久化機(jī)制是什么?各自的優(yōu)缺點(diǎn)?

答:Redis提供兩種持久化機(jī)制—— RDB 和 AOF 機(jī)制。

1、RDB(Redis DataBase)持久化方式是指用數(shù)據(jù)集快照的方式半持久化模式記錄 redis 數(shù)據(jù)庫的所有鍵值對,在某個(gè)時(shí)間點(diǎn)將數(shù)據(jù)寫入一個(gè)臨時(shí)文件,持久化結(jié)束后,用這個(gè)臨時(shí)文件替換上次持久化的文件,達(dá)到數(shù)據(jù)恢復(fù)。

優(yōu)點(diǎn):(1)只有一個(gè)文件 dump.rdb,方便持久化。(2)容災(zāi)性好,一個(gè)文件可以保存到安全的磁盤。(3)性能最大化,fork 子進(jìn)程來完成寫操作,讓主進(jìn)程繼續(xù)處理命令,所以是 IO最大化。使用單獨(dú)子進(jìn)程來進(jìn)行持久化,主進(jìn)程不會(huì)進(jìn)行任何 IO 操作,保證了 redis的高性能。(4)相對于數(shù)據(jù)集大時(shí),比 AOF 的啟動(dòng)效率更高。

缺點(diǎn):數(shù)據(jù)安全性低。RDB 是間隔一段時(shí)間進(jìn)行持久化,如果持久化之間 redis 發(fā)生故障,會(huì)發(fā)生數(shù)據(jù)丟失。所以這種方式更適合數(shù)據(jù)要求不嚴(yán)謹(jǐn)?shù)膱鼍啊?/p>

2、AOF (Append-only file)持久化方式:是指所有的命令行記錄以 redis 命令請求協(xié)議的格式完全持久化存儲,保存為 aof 文件。

優(yōu)點(diǎn):(1)數(shù)據(jù)安全,aof 持久化可以配置 appendfsync 屬性,有 always,每進(jìn)行一次命令操作就記錄到 aof 文件中一次。(2)通過 append 模式寫文件,即使中途服務(wù)器宕機(jī),可以通過 redis-check-aof工具解決數(shù)據(jù)一致性問題。(3)AOF 機(jī)制的 rewrite 模式。AOF 文件沒被 rewrite 之前(文件過大時(shí)會(huì)對命令進(jìn)行合并重寫),可以刪除其中的某些命令(比如誤操作的 flushall)。

缺點(diǎn):(1)AOF 文件比 RDB 文件大,且恢復(fù)速度慢。(2)數(shù)據(jù)集大的時(shí)候,比 RDB 啟動(dòng)效率低。

Redis 常見性能問題和解決方案。

答:(1)Master 最好不要寫內(nèi)存快照,如果 Master 寫內(nèi)存快照,save 命令調(diào)度 rdbSave函數(shù),會(huì)阻塞主線程的工作,當(dāng)快照比較大時(shí)對性能影響是非常大的,會(huì)間斷性暫停服務(wù)。

(2)如果數(shù)據(jù)比較重要,某個(gè) Slave 開啟 AOF 備份數(shù)據(jù),策略設(shè)置為每秒同步一次。

(3)為了主從復(fù)制的速度和連接的穩(wěn)定性,Master 和 Slave 最好在同一個(gè)局域網(wǎng)。

(4)盡量避免在壓力很大的主庫上增加從庫。

(5)主從復(fù)制不要用圖狀結(jié)構(gòu),用單向鏈表結(jié)構(gòu)更為穩(wěn)定,即:Master <- Slave1<- Slave2 <- Slave3…這樣的結(jié)構(gòu)方便解決單點(diǎn)故障問題,實(shí)現(xiàn) Slave 對 Master的替換。如果 Master 掛了,可以立刻啟用 Slave1 做 Master,其它不變。

redis 過期鍵的刪除策略是什么?

答:(1)定時(shí)刪除:在設(shè)置鍵的過期時(shí)間的同時(shí),創(chuàng)建一個(gè)定時(shí)器 timer,讓定時(shí)器在鍵的過期時(shí)間來臨時(shí),立即執(zhí)行對鍵的刪除操作。

(2)惰性刪除:放任鍵過期不管,但是每次從鍵空間中獲取鍵時(shí),都檢查取得的鍵是否過期,如果過期的話,就刪除該鍵;否則,就返回該鍵。

(3)定期刪除:每隔一段時(shí)間程序就對數(shù)據(jù)庫進(jìn)行一次檢查,刪除里面的過期鍵。至于要?jiǎng)h除多少過期鍵,以及要檢查多少個(gè)數(shù)據(jù)庫,則由算法決定。

以上就是“進(jìn)階學(xué)習(xí)的redis常見面試題匯總”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久国产a | 国内视频精品 | 日本精品不卡 | 49xxx中国妇女内谢视频 | 在线播放国产一区二区三区 | 中国一级毛片录像 | 青青草免费在线视频 | 国内精品自在自线香蕉 | 久久久精品2021免费观看 | 亚洲精品综合久久 | 四虎永久在线精品2022 | 涩涩伊人| 成 人国产在线观看高清不卡 | 日韩亚洲一区中文字幕 | 最近中文字幕精彩视频 | 九九精品热线免费观看6 | 亚洲国产视频在线 | 欧美精品视 | 欧洲国产伦久久久久久久 | 波多野野结衣1区二区 | 人人夜| 最近中文国语字幕在线播放视频 | 青青在线成人免费视频 | 可以免费观看的一级毛片 | 久久精品观看 | 免费一级欧美片在线观看 | 91视频青青草 | 欧美精彩狠狠色丁香婷婷 | 午夜小网站 | 欧美成人区 | 台湾一级毛片永久免费 | 精品不卡一区中文字幕 | 精品国产一区二区三区不卡在线 | 99精品福利 | 亚洲天堂一区二区 | 欧美一区二区久久精品 | 婷婷免费高清视频在线观看 | 午夜亚洲精品久久久久久 | 在线播放国产一区 | 国产综合精品久久亚洲 | 亚洲精品14p |