分享常見Redis面試題答疑

Redis是目前各大企業都在使用的人們技術,也是企業選拔人才時考覈的一個難題。有很多同學只是簡單瞭解Redis的應用,但對於爲什麼要用Redis以及企業面試中有關Redis的問題卻答不上來。接下來我就給大家簡單分析一下。

爲什麼使用Redis?

項目中使用Redis,主要考慮性能和併發兩個方面。在大併發的情況下,所有的請求直接訪問數據庫,數據庫會出現連接異常。這個時候,就需要使用Redis做一個緩衝操作,讓請求先訪問到Redis,而不是直接訪問數據庫。不過,Redis也有慢查詢操作。根據交互效果的不同,響應時間沒有固定標準。在理想狀態下,我們的頁面跳轉需要在瞬間解決,對於頁內操作則需要在剎那間解決。
在這裏插入圖片描述
Redis的數據類型有哪些?

數據類型:

1)String:一般做一些複雜的計數功能的緩存;

2)Hash:存儲二維數據或對象;

3)List:可實現隊列,棧及有序的數據存儲;

4)Set:常用於黑名單,微信抽獎等功能,應用場景多變;

5)SortedSet:做排行榜應用,取TOPN操作;延時任務;做範圍查找。

Redis持久化機制是什麼?
Redis是一個支持持久化的內存數據庫,通過持久化機制把內存中的數據同步到硬盤文件來保證數據持久化。當Redis重啓後通過把硬盤文件重新加載到內存,就能達到恢復數據的目的。

實現:單獨創建fork()一個子進程,將當前父進程的數據庫數據複製到子進程的內存中,然後由子進程寫入到臨時文件中,持久化的過程結束了,再用這個臨時文件替換上次的快照文件,然後子進程退出,內存釋放。

RDB是Redis默認的持久化方式。按照一定的時間週期策略把內存的數據以快照的形式保存到硬盤的二進制文件。即Snapshot快照存儲,對應產生的數據文件爲dump.rdb,通過配置文件中的save參數來定義快照的週期。( 快照可以是其所表示的數據的一個副本,也可以是數據的一個複製品。)

AOF:Redis會將每一個收到的寫命令都通過Write函數追加到文件最後,類似於MySQL的binlog。當Redis重啓是會通過重新執行文件中保存的寫命令來在內存中重建整個數據庫的內容。

當兩種方式同時開啓時,數據恢復Redis會優先選擇AOF恢復。

單線程的Redis爲什麼這麼快?

1)純內存操作
2)單線程操作,避免了頻繁的上下文切換
3)採用了非阻塞I/O多路複用機制

Memcache與Redis的區別都有哪些?

1)存儲方式 Memecache把數據全部存在內存之中,斷電後會掛掉,數據不能超過內存大小。 Redis有部份存在硬盤上,redis可以持久化其數據。

2)數據支持類型 memcached所有的值均是簡單的字符串,redis作爲其替代者,支持更爲豐富的數據類型 ,提供list,set,zset,hash等數據結構的存儲。

3)使用底層模型不同 它們之間底層實現方式 以及與客戶端之間通信的應用協議不一樣。Redis直接自己構建了VM機制 ,因爲一般的系統調用系統函數的話,會浪費一定的時間去移動和請求。

4)value 值大小不同:Redis 最大可以達到1gb;memcache只有1mb。

5)redis的速度比memcached快很多

6)Redis支持數據的備份,即master-slave模式的數據備份。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章