Redis必備面試題《基礎篇》

来源:https://www.cnblogs.com/weigy/archive/2019/11/13/11845335.html
-Advertisement-
Play Games

Date:2019-11-12 讀前思考: 面試官會問什麼樣的問題? 所問的問題背後真實的套路是什麼? 喜歡問Redis哪些問題? 如何順暢回答面試問的問題?弔打面試官。 1、什麼是Redis? 2、Redis相比memcached有哪些優勢? 3、Redis支持哪幾種數據類型? 4、Redis的緩 ...


Date:2019-11-12

讀前思考:

    面試官會問什麼樣的問題?

    所問的問題背後真實的套路是什麼?

    喜歡問Redis哪些問題?

    如何順暢回答面試問的問題?弔打面試官。

 

1、什麼是Redis?

   Redis的全稱是Remote Dictionary Server,Redis本質上是一個key_value類型的記憶體資料庫,很像memcached,整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫數據刷新到硬碟上進行保存。因為是純記憶體操作,Redis的性能非常出色,每秒可以處理超過10萬次的讀寫操作,是已知性能最快的Key-Value DB。

 

2、Redis相比memcached有哪些優勢,區別?

    首先從redis的好處說起, 

     (1) 速度快,因為數據存在記憶體中,類似於HashMap,HashMap的優勢就是查找和操作的時間複雜度都是O(1)

     (2) 支持豐富數據類型,支持string,list,set,sorted set,hash

     (3) 支持事務,操作都是原子性,所謂的原子性就是對數據的更改要麼全部執行,要麼全部不執行

     (4) 豐富的特性:可用於緩存,消息,按key設置過期時間,過期後將會自動刪除

   Redis相比memcached的優勢:

      (1) memcached所有的值均是簡單的字元串,redis作為其替代者,支持更為豐富的數據類型

      (2) redis的速度比memcached快很多

      (3) redis可以持久化其數據,可以將記憶體中的數據保存在磁碟中,重啟的時候可以再次載入進行使用;

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

 記憶體使用效率對比:

    1.簡單的key-value存儲,memcached的記憶體利用率更高,而如果redis採用hash結構存儲key-value,記憶體利用率會遠高於memcached,因為hash組合了壓縮方式;
    2.memcached使用預分配的記憶體池的方式,且在記憶體仍然有很大空間時,新的數據也可能會被剔除,而redis使用現場申請記憶體的方式來存儲數據,不會剔除任何非臨時數據 redis更適合作為存儲而不是cache。    其他區別:

          1)存儲方式

                Memecache把數據全部存在記憶體之中,斷電後會掛掉,數據不能超過記憶體大小。 Redis有部份存在硬碟上,這樣能保證數據的持久性。

          2)數據支持類型

          Memcache對數據類型支持相對簡單。

         Redis有複雜的數據類型。

         3)使用底層模型不同

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

        4)value大小

    redis最大可以達到1GB,而memcache只有1MB

 

3、Redis支持哪幾種數據類型?

 

4、Redis的緩存失效策略和主鍵失效機制?

 

5、Redis的全稱是什麼?

 

6、Redis有哪幾種數據淘汰策略?

 

7、Redis官方為什麼不提供Windows版本?

 

8、一個字元串類型的值能存儲最大容量是多少?

 

9、為什麼Redis需要把所有數據放到記憶體中?

 

10、Redis集群方案應該怎麼做?都有哪些方案?

 

11、Redis集群方案什麼情況下會導致整個集群不可用?

 

12、MySQL里有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據?

redis記憶體數據集大小上升到一定大小的時候,就會施行數據淘汰策略。

 

13、Redis有哪些適合的場景?

 

14、Redis支持的Java客戶端都有哪些?官方推薦用哪個?

 

15、Redis和Redisson有什麼關係?

 

16、Jedis與Redisson對比有什麼優缺點?

 

17、Redis如何設置密碼及驗證密碼?

 

18、說說Redis哈希槽的概念?

 

19、Redis集群的主從複製模型是怎樣的?

 

20、Redis集群會有寫操作丟失嗎?為什麼?

 

21、Redis集群之間是如何複製的?

 

22、Redis集群最大節點個數是多少?

 

23、Redis集群如何選擇資料庫?

 

24、怎麼測試Redis的連通性?

 

25、Redis中的管道有什麼用?

 

26、怎麼理解Redis事務?

 

27、Redis事務相關的命令有哪幾個?

 

28、Redis key的過期時間和永久有效分別怎麼設置?

 

29、Redis如何做記憶體優化?

 

30、Redis回收進程如何工作的?

 

31、Redis回收使用的是什麼演算法?

 

32、Redis如何做大量數據插入?

 

33、為什麼要做Redis分區?

 

34、你知道有哪些Redis分區實現方案?

 

35、Redis分區有什麼缺點?

 

36、Redis持久化數據和緩存怎麼做擴容?redis持久化的幾種方式? Redis如何做持久化的?

 

37、分散式Redis是前期做還是後期規模上來了再做好?為什麼?

 

38、Twemproxy是什麼?

 

39、支持一致性哈希的客戶端有哪些?

 

40、Redis與其他key-value存儲有什麼不同?

 

41、Redis的記憶體占用情況怎麼樣?

 

42、都有哪些辦法可以降低Redis的記憶體使用情況呢?

 

43、查看Redis使用情況及狀態信息用什麼命令?
info

44、Redis的記憶體用完了會發生什麼?

 

45、Redis主要消耗什麼物理資源?


46、Redis官方為什麼不提供Windows版本?


47、為什麼Redis需要把所有數據放到記憶體中?

Redis為了達到最快的讀寫速度將數據都讀到記憶體中,並通過非同步的方式將數據寫入磁碟。所以redis具有快速和數據持久化的特征。如果不將數據放在記憶體中,磁碟I/O速度為嚴重影響redis的性能。在記憶體越來越便宜的今天,redis將會越來越受歡迎。 如果設置了最大使用的記憶體,則數據已有記錄數達到記憶體限值後不能繼續插入新值。

 

48、Redis集群方案應該怎麼做?都有哪些方案?

 

49、Redis集群方案什麼情況下會導致整個集群不可用?

 

50、Redis支持的Java客戶端都有哪些?官方推薦用哪個?

 

51、Redis和Redisson有什麼關係?

 

52、Jedis與Redisson對比有什麼優缺點?

 

53、說說Redis哈希槽的概念?

 

54、Redis集群的主從複製模型是怎樣的?

 

55、Redis集群會有寫操作丟失嗎?為什麼?

Redis並不能保證數據的強一致性,這意味這在實際中集群在特定的條件下可能會丟失寫操作。


56、Redis集群最大節點個數是多少?


57、Redis集群如何選擇資料庫?


58、怎麼理解Redis事務?
事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端發送來的命令請求所打斷。
事務是一個原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。


59、Redis如何做記憶體優化?


60、Redis回收進程如何工作的?


61、 使用過Redis分散式鎖麽,它是什麼回事?


62、 假如Redis裡面有1億個key,其中有10w個key是以某個固定的已知的首碼開頭的,如果將它們全部找出來?


63、 如果這個redis正在給線上的業務提供服務,那使用keys指令會有什麼問題?


64、 使用過Redis做非同步隊列麽,你是怎麼用的?


65、 redis如何實現延時隊列?


66、 如果有大量的key需要設置同一時間過期,一般需要註意什麼


67、 Pipeline有什麼好處,為什麼要用pipeline?


68、 Redis的同步機制瞭解麽?


69、 是否使用過Redis集群,集群的原理是什麼?


70、 為什麼redis需要把所有數據放到記憶體中?


71、 Redis為什麼是單進程單線程的?


72、 redis的併發競爭問題如何解決?


73、 redis事物的瞭解CAS(check-and-set 操作實現樂觀鎖 )?


74、 WATCH命令和基於CAS的樂觀鎖?


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 根據.frm和.ibd文件恢復表結構和數據 ...
  • 解決方案:(參考以下命令) 1、打開cmd,切換到mysql的bin目錄下 2、 D:\Program Files\MySQL5.1\bin mysqld.exe install Service successfully installed. 3、 D:\Program Files\MySQL5.1 ...
  • 1. GTID優缺點 MySQL傳統點位複製在5.7版本前是主要的主從複製模式,而隨著MySQL5.6版本引入GTID,並且MySQL5.7進行各方面的優化以後,在mySQL5.7(尤其是MySQL5.7.6)版本後GTID模式的主從複製方式成為一個新的選擇方式。要使用GTID模式,首先也需知其優缺 ...
  • [TOC] MyBatis簡單介紹 MyBatis是一個持久層框架,使用簡單,學習成本較低。可以執行自己手寫的SQL語句,比較靈活。但是MyBatis的自動化程度不高,移植性也不高,有時從一個資料庫遷移到另外一個資料庫的時候需要自己修改配置。 一個Mybatis最簡單的使用列子如下: 從配置文件(通 ...
  • 題目描述 設定有一個資料庫,裡面有4張表: 學生表(student) 課程表(course) 成績表(score) 教師信息表(teacher) 表結構如下: 表一_學生表(student) 屬性名數據類型含 義 sno int 學號(主鍵) sname varchar 學生姓名 ssex varc ...
  • 修改分區表主鍵時報錯: 在行: 2 上開始執行命令時出錯 -alter table KC23 modify AAZ210 VARCHAR2(50)錯誤報告 -SQL 錯誤: ORA-14061: 不能更改索引分區列的數據類型或長度14061. 00000 - "data type or length ...
  • 資料庫加鎖是修改哪一條加鎖,還是在頁上加鎖,還是在表上加鎖,資料庫來決定 如果你更改的是兩條記錄,就在兩條記錄上加鎖,如果你更改的是很多條,這個時候資料庫一看一條一條加鎖太麻煩,給整個頁加鎖更省事,或者給整個表加鎖更加省事 加鎖的級別越大,資料庫越省事,資料庫越省事,併發性越差,修改一條記錄如果給表 ...
  • 問題: 1.在頁面存入中文後亂碼,從前端從後臺發現數據未發生異常,發現是存入資料庫後亂碼; 經查詢該欄位為text欄位,存入中文會亂碼 如圖 解決辦法: 1.將text轉為varchar或nvarchar,再修改為ntext alter table ReportSpec alter column c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...