摘要:說一下是怎樣將數據持久化的為某一時刻下的數據庫里的內容拍一張照片快照,并將該照片寫進磁盤中,實現數據持久化。通過寫命令,將數據追加到文件末尾,實現數據持久化。至此,有關數據庫知識點的面試題就已告一段落,下次更新網絡通信方面面試題。
1.說一說 Redis 是什么
Redis 是一種「Key-Value」的內存型、非關系型數據庫,屬于 NoSQL 的一種。
Redis 的讀寫速度特別快,特別適合讀寫頻繁的場景。
Redis 支持主從復制,支持數據持久化。
2.知道 Redis 有哪些常用數據類型嗎String
List
Hash
Set
Zset
3.說一下 Redis 用來做什么利用 String,可以很容易實現「計數器」功能。
利用 List ,可以實現「粉絲列表」功能。
利用 Hash,可以實現「瀏覽記錄」功能。
利用 Set 的并集、合集特性,可以實現「共同好友」功能。
利用 Zset 的排序特性,可以實現「排行榜」功能。
由于 Redis 的高速讀寫特性,可以充當「緩存」。
充當「消息隊列」,如 Celery 中就是用 Redis 充當中間人,生產者和消費者都是向 Redis 中發布任務和接受任務。
4.說一下 Redis 是怎樣將數據持久化的RDB
為某一時刻下的 Redis 數據庫里的內容拍一張照片(快照),并將該照片寫進磁盤中,實現數據持久化。
當數據庫崩潰時,會丟失最后一次快照的內容。
如果數據庫內容過大,那么生成快照時間會很長。
AOF
通過寫命令,將數據追加到(Append Only File)文件末尾,實現數據持久化。
但是使用 AOF,需要解決同步問題。
因為文件的寫入不會立馬執行,而是先將寫入的內容放置「緩存區」,等待操作系統決定何時將緩存區的內容寫入磁盤。
Redis 擁有三種同步策略:Always、Everysec、No。
絕大多數情況下都是使用第二種策略,每隔一秒鐘同步一次,這樣就算數據庫崩潰也只會損失一秒鐘的數據。
而其他兩種策略,要么對數據庫的壓力過大,過多降低數據庫的性能,要么具有丟失數據量過大的風險。
5.了解 Redis 主從復制嗎使用slaveof host port設置主從服務器。
Redis 的主從服務器有點像樹結構,從服務器只能有一個主服務器。
Redis 不支持「主-主復制」。
Redis 主從復制通過利用 RDB 快照持久化的特性,將某一時刻下主服務器的內容生成快照,然后發送給從服務器,并利用緩存區保存在這期間里進行的「寫命令」,等待快照發送完畢之后,再將寫命令發送給從服務器。
從服務器在接收到快照之后,會將自身的數據全部丟棄,載入快照里的數據,載入完畢之后,再執行主服務器的寫命令。
6. 說一下 Redis 和 Memcache 的區別Redis | Memcache |
---|---|
支持 String、List、Hash、Set、Zset | 只支持 String |
支持數據持久化 | 不支持 |
支持事務 | 不支持 |
支持主從復制 | 不支持 |
支持分布式 | 不支持 |
支持將數據交換到磁盤中 | 不支持 |
單進程、單線程 IO 多路復用 | 多線程、非阻塞 IO |
總結為一點,只用得到 Redis 里的 String 類型存儲數據時,使用 Memcache。
除此之外,使用 Redis。
7. 了解 Redis 是怎樣保證熱數據的嗎Redis 是內存型的數據庫,可以設置最大內存,當內存不夠時,會使用「數據淘汰策略」,刪除部分數據。
但是并不是針對 Redis 里所有的數據,而是抽樣選取小部分「數據集」。
策略 | 描述 |
---|---|
Volatile-LRU | 從設置了過期時間的「數據集」中,刪除最近、最少使用的數據集 |
Volatile-TTL | 從設置了過期時間的「數據集」中,刪除即將要過期的數據。 |
Volatile-Random | 從設置了過期時間的「數據集」中,隨機刪除數據。 |
Always-LRU | 從「數據集」中刪除最近、最少使用的數據。 |
AllKeys-Random | 從「數據集」中隨機刪除數據。 |
Noeviction | 禁止刪除數據。 |
當 Redis 作為緩存使用時,為了保證緩存數據都是「熱數據」,可以將 Redis 的最大內存設置為緩存的大小,并使用 Always-LRU 策略。將最近最少使用的數據舍棄,保證緩存里熱數據的「高命中率」。
至此,有關「數據庫」知識點的面試題就已告一段落,下次更新「網絡通信方面」面試題。
所有內容均已上傳至「GitHub」倉庫,歡迎大家點擊原文查閱。
歡迎大家關注個人微信公眾號「PythonDeveloper」,所有內容第一時間更新于公眾號。
所有內容均為本人一點一點敲出來的,難免會有錯字、語句不通順的地方,歡迎大家指正。
因本人水平有限,文章內容難免會有出錯、遺漏,歡迎大家評論指出,一起進步。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61740.html
摘要:說一下是怎樣將數據持久化的為某一時刻下的數據庫里的內容拍一張照片快照,并將該照片寫進磁盤中,實現數據持久化。通過寫命令,將數據追加到文件末尾,實現數據持久化。至此,有關數據庫知識點的面試題就已告一段落,下次更新網絡通信方面面試題。 1.說一說 Redis 是什么 Redis 是一種「Key-Value」的內存型、非關系型數據庫,屬于 NoSQL 的一種。 Redis 的讀寫速度特別快,...
摘要:最近在看的源碼,不得不說的是,的源碼十分優雅簡潔,下面就來分享下的緩存利用的算法算法。關于算法的具體流程,可以來看下這個,這個可視化過程,模擬了算法進行調度的過程。 最近在看Vue的源碼,不得不說的是,Vue的源碼十分優雅簡潔,下面就來分享下Vue的緩存利用的算法LRU算法。 LRU算法 LRU是Least recently used的簡寫,主要原理是根據歷史訪問記錄來淘汰數據,說白了...
摘要:個高級多線程面試題及回答后端掘金在任何面試當中多線程和并發方面的問題都是必不可少的一部分。默認為提供了年杭州面試經歷掘金想換個環境試試覺得做的不是自己想要的。源碼網站安居客項目架構演進掘金本文已授權微信公眾號獨家發布。 15 個高級 Java 多線程面試題及回答 - 后端 - 掘金在任何Java面試當中多線程和并發方面的問題都是必不可少的一部分。如果你想獲得任何股票投資銀行的前臺資訊職...
閱讀 860·2021-11-25 09:44
閱讀 1063·2021-11-19 09:40
閱讀 7062·2021-09-07 10:23
閱讀 1975·2019-08-28 17:51
閱讀 1106·2019-08-26 10:59
閱讀 1928·2019-08-26 10:25
閱讀 3131·2019-08-23 18:22
閱讀 865·2019-08-23 16:58