Redis基礎面試題


1、談談你對Redis的理解?它的使用場景有哪些?

Redis是一個開源的內存中的數據結構存儲系統(tǒng)、支持網絡、可基于內存亦可持久化的日志型、Key-Value 數據庫,消息中間件。

Redis 使用場景
1)會話緩存(Session Cache),是 Redis 最常使用的一種情景;
2)全頁緩存(FPC);
3)用作網絡版集合和隊;
4)排行榜和計數器,Redis 在內存中對數字遞增、遞減的操作實現的非常好。Set 和 Sorted Set 使得我們在執(zhí)行這些操作的時候非常簡單;
5)發(fā)布和訂閱。

2、Redis有哪些功能?

1)數據緩存功能;
2)分布式鎖的功能;
3)支持數據持久化;
4)支持事務;
5)支持消息隊列。

3、Redis為什么這么快?

1)完全基于內存,絕大部分請求是純粹的內存操作,非??焖?。數據存在內存中,類似于HashMap,HashMap的優(yōu)勢就是查找和操作的時間復雜度都是O(1);

2)數據結構簡單,對數據操作也簡單,Redis中的數據結構是專門進行設計的;

3)采用單線程,避免了不必要的上下文切換和競爭條件,也不存在多進程或者多線程導致的切換而消耗 CPU,不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的性能消耗;

4)使用多路I/O復用模型,非阻塞IO;

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

4、Redis支持哪些數據類型?

1)string:字符串;
2)hash:哈希;
3)list:列表;
4)set:集合;
5)sorted set:有序集合。

5、怎么保證緩存和數據庫數據的一致性?

合理設置緩存的過期時間。新增、更改、刪除數據庫操作時同步更新 Redis,可以使用事物機制來保證數據的一致性。

6、Redis持久化機制有哪些?各有什么優(yōu)缺點?

Redis 提供兩種持久化機制:RDB(Redis DataBase)AOF(Append-only file)。

RDB指用數據集快照的方式半持久化模式,記錄 redis 數據庫的所有鍵值對,在某個時間點將數據寫入一個臨時文件,持久化結束后,用這個臨時文件替換上次持久化的文件,可恢復數據;

優(yōu)點:
1)只有一個文件 dump.rdb,恢復操作簡單,容災性好;
2)性能較高,fork 子進程進行寫操作,主進程繼續(xù)處理命令;
3)大數據集比 AOF 的恢復效率高。

缺點:
數據安全性低,RDB 是每間隔一段時間進行持久化,若期間 redis 發(fā)生故障,可能會發(fā)生數據丟失。

AOF指所有的命令行記錄以 Redis 命令請求協(xié)議的格式完全持久化存儲,保存為 aof 文件。

優(yōu)點:
1)數據安全,AOF 持久化可以配置 appendfsync 屬性為 always,記錄每個命令操作到 aof 文件中一次;通過 append 模式寫文件,即使中途服務器宕機,也可以通過 redis-check-aof 工具解決數據一致性問題;
2)AOF 機制的 rewrite 模式,AOF 文件沒被 rewrite 之前可以進行處理,如刪除文件中的 flushall 命令。

缺點:
AOF 的持久化文件比 RDB 大,恢復速度慢。

7、Redis和Memcached的區(qū)別?

1)數據結構:Redis 支持 5 種數據結構;Memcached 只支持字符串;
2)性能對比:單核小數據量存儲 Redis 比 Memcached 快;大數據存儲 Redis 稍遜;
3)持久化:Redis 支持持久化;Memecached 數據都在內存之中;
4)線程模型:Redis 使用單線程模型,基于非阻塞的 IO 多路復用機制,無線程切換;Memecached 使用多線程模型,一個 master 線程,多個 worker 線程;
5)災難恢復:Redis數據丟失后可以通過 aof 恢復;Memecached 掛掉后數據不可恢復;
6)集群模式:Redis 原生支持cluster模式;Memcached 沒有原生的集群模式。

8、什么是緩存穿透?怎么解決?

緩存穿透:指查詢一個一定不存在的數據,由于緩存是不命中時則需要從數據庫查詢,查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,造成緩存穿透。

解決方案:最簡單粗暴的方法如果一個查詢返回的數據為空(不管是數據不存在,還是系統(tǒng)故障),我們就把這個空結果進行緩存,但它的過期時間會很短,最長不超過五分鐘。

未完待續(xù)

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容