前言
這幾年在Java工程師招聘時,會看到很多人的簡歷都寫著使用了Spring Cloud做微服務實現,使用Docker做自動化部署,并且也會把這些做為自己的亮點。而比較有趣的這其中以小公司出來的人為絕大多數,大的公司出來的人簡歷上倒是很少提這些東西。
對于我自己來說,從15年就開始關注這一塊,看過馬丁.福勒最開始的關于微服務的論文、也看過不少對微服務的論證的英文文章和書,也研究過Spring Cloud、Sofa等開源實現以及Service mesh。考慮到我們公司研發團隊人力不足、基礎設施不完善,當初是沒有推行微服務的。但隨著看到上述的那種簡歷越來越多,有時候我也會疑問:難道真的不用微服務就落后了嗎?公司的同事如果不掌握這些就真的沒有競爭力了嗎。而隨著最近公司業務的逐步提升,研發人員越來越多,借著在梳理公司的微服務落地計劃時,也梳理了一下微服務的相關知識點,也是本文的主要內容。
咱先來聊聊Redis
像Redis的基礎入門,掌握下圖這幾個列出來的知識點足以了。
進階的話,就得下點功夫了,事務、主從復制、哨兵、集群等等之類的搞不明白你就上不去呀。
再看美團億級流量Redis實戰,Redis分布式鎖、session、緩存與數據庫一致性問題、緩存雪崩等之類的都是重中之重的技術點,必須掌握,沒得商量。
看了這些個技術點,那么我現在就來考考你一些Redis面試問題(準備好,接招吧):
- 為什么要用redis? /為什么要用緩存?
- 為什么要用redis而不用map/guava做緩存?
- 如何保證緩存與數據庫雙寫時的數據一致性?
- redis 常見數據結構以及使用場景分析?(String/Hash/List/Set/Sorted Set)
- redis如何設置過期時間?
- redis內存淘汰機制(MySQL里有2000w數據,Redis中只存20w的數據,如何保證Redis中的數據都是熱點數據?
- Redis 持久化有哪幾種方式,怎么選?(怎么保證redis 掛掉之后再重啟數據可以進行恢復?)
- redis事務?
- Redis常見異常及解決方案?(緩存穿透/緩存雪崩/緩存預熱/緩存降級)
- 分布式環境下常見的應用場景?(分布式鎖/分布式自增ID)
- Redis集群模式?(主從模式/哨兵模式/Cluster集群模式)
- 如何解決 Redis 的并發競爭 Key 問題?
接不住的請看下方答案截圖(解析不少,截取不完,可提供完整的答案解析原件):
接得住的繼續,**Redis必備70題(概念+數據結構與指令+高并發處理策略+集群+緩存管理與持久化機制+應用場景設計)**答案已都整理好
-
第一部分:Redis 的概念理解
-
1. 什么是 Redis?
-
2. Redis 的特點有哪些?
-
3. Memcache 與 Redis 的區別都有哪些?
-
4. Redis 相比 Memcached 有哪些優勢?
-
5. 如何實現本地緩存?請描述一下你知道的方式
-
6. Redis 通訊協議是什么?有什么特點?
-
第二部分:Redis 數據結構與指令
-
1. Redis 支持的數據類型
-
2. Redis 常用的命令有哪些?
-
3. 一個字符串類型的值能存儲最大容量是多少?
-
4. Redis 各個數據類型最大存儲量分別是多少?
-
5. 請介紹一下 Redis 的數據類型 SortedSet(zset)以及底層實現機制?
-
6. Redis 事務相關命令有哪些?
-
7. 什么是 Redis 事務?原理是什么?
-
8. Redis 事務的注意點有哪些?
-
9. Redis 為什么不支持回滾?
-
10. 請介紹一下 Redis 的 Pipeline(管道),以及使用場景
-
11. 請說明一下 Redis 的批量命令與 Pipeline 有什么不同?
-
12. 請介紹一下 Redis 的發布訂閱功能
-
13. Redis 的鏈表數據結構的特征有哪些?
-
14. 請介紹一下 Redis 的 String 類型底層實現?
-
15. Redis 的 String 類型使用 SSD 方式實現的好處?
-
16. 設置鍵的生存時間和過期時間有哪些命令?
-
第三部分:Redis 高并發處理策略
-
1. 為什么 Redis 需要把所有數據放到內存中?
-
2. Redis 是單線程的嗎?
-
3. Redis 為什么設計成單線程的?
-
4. 什么是緩存穿透?怎么解決?
-
5. 什么是緩存雪崩? 怎么解決?
-
6. 緩存的更新策略有幾種?分別有什么注意事項?
-
7. 請介紹幾個可能導致 Redis 阻塞的原因
-
8. 怎么去發現 Redis 阻塞異常情況?
-
第四部分:Redis 集群結構以及設計理念
-
1. Redis 集群架構模式有哪幾種?
-
2. Redis 集群最大節點個數是多少?
-
3. Redis 集群的主從復制模型是怎樣的?
-
4. 請介紹一下 Redis 集群實現方案
-
5. Redis 集群會有寫操作丟失嗎?為什么
-
6. Redis 慢查詢是什么?通過什么配置?
-
7. Redis 的慢查詢修復經驗有哪些?怎么修復的?
-
8. 如何優化 Redis 服務的性能?
-
9. Redis 的主從復制模式有什么優缺點?
-
10. Redis sentinel(哨兵)模式優缺點有哪些?
-
11. 如何設置 Redis 的最大連接數?查看 Redis 的最大連接數?查看 Redis 的當前
-
12. 介紹一些 Redis 常用的安全設置?
-
第五部分:Redis 緩存管理與持久化機制
-
1. Redis 持久化機制有哪些?
-
2. Redis 持久化機制 AOF 和 RDB 有哪些不同之處?
-
3. 請介紹一下 RDB 持久化機制的優缺點
-
4. 請介紹一下 AOF 持久化機制的優缺點
-
5. 如果 AOF 文件的數據出現異常, Redis 服務怎么處理?
-
6. 常見的淘汰算法有哪些?
-
7. Redis 淘汰策略有哪些?
-
8. Redis 緩存失效策略有哪些?
-
9. Redis 如何做內存優化?
-
10. 什么是 bigkey? 有什么影響?
-
11. 怎么發現 bigkey?
-
12. Redis 的內存消耗分類有哪些?內存統計使用什么命令?
-
13. 簡單介紹一下 Redis 的內存管理方式有哪些?
-
14. 如何設置 Redis 的內存上限?有什么作用?
-
15. Redis 報內存不足怎么處理?
-
第六部分:Redis 應用場景設計
-
1. Redis 適用場景有哪些?
-
2. Redis 常用的業務場景有哪些?
-
3. Redis 支持的 Java 客戶端有哪些? 簡單說明一下特點。
-
4. 請簡單描述一下 Jedis 的基本使用方法?
-
5. Jedis 連接池鏈接方法有什么優點?
-
6. 什么是分布式鎖?有什么作用?
-
7. 分布式鎖可以通過什么來實現?
-
8. 介紹一下分布式鎖實現需要注意的事項?
-
9. Redis 怎么實現分布式鎖?
-
10. 緩存命中率表示什么?
-
11. 怎么提高緩存命中率?
-
12. 請介紹一下 Spring 注解緩存
聊完面試,該動手了,看看Redis實戰,比如下方這本翻譯過來的**《Redis In Action》**就是很不錯的參考材料
全書是分三個部分:入門、核心概念、進階內容。
- 第一部分對Redis進行了介紹,說明了Redis的基本使用方法、它擁有的5種數據結構以及操作這5種數據結構的命令,并講解了如何使用Redis去構建文章聚合網站、cookie、購物車、網頁緩存、數據庫行緩存等一系列程序。
- 第二部分對Redis命令進行了更詳細的介紹,并展示了如何使用Redis去構建更為復雜的輔助工具和應用程序,并在最后展示了如何使用Redis去構建一個簡單的社交網站。
- 第三部分對Redis用戶經常會遇到的一些問題進行了介紹,講解了降低Redis內存占用的方法、擴展Redis性能的方法以及使用Lua語言進行腳本編程的方法。
Redis就說這么多,別忘了還有MongDB
MongDB從入門到進階再到實戰,以上的技術點我都有全部列出,掌握了你就是大佬咯~
為幫助你迅速成為大牛級人物,我想這**《MongoDB用起來-快速上手》+《MongoDB用起來-集群安全》**兩本筆記pdf你還是不能錯過。
第一本:MongoDB快速上手
1 MongoDB相關概念
- 1.1 業務應用場景
- 1.2 MongoDB簡介
- 1.3 體系結構
- 1.4 數據模型
- 1.5 MongoDB的特點
2 單機部署
- 2.1 Windows系統中的安裝啟動
- 2.2 Shell連接(mongo命令)
- 2.3 Compass-圖形化界面客戶端
- 2.4 Linux系統中的安裝啟動和連接
3 基本常用命令
- 3.1 案例需求
- 3.2 數據庫操作
- 3.3 集合操作
- 3.4 文檔基本CRUD
- 3.5 文檔的分頁查詢
- 3.6 文檔的更多查詢
4 索引-Index
- 4.1 概述
- 4.2 索引的類型
- 4.3 索引的管理操作
- 4.4 索引的使用
5 文章評論
- 5.1 需求分析
- 5.2 表結構分析
- 5.3 技術選型
- 5.4 文章微服務模塊搭建
- 5.5 文章評論實體類的編寫
- 5.6 文章評論的基本增刪改查
- 5.7 根據上級ID查詢文章評論的分頁列表
- 5.8 MongoTemplate實現評論點贊
第二本:MongoDB集群和安全
1 副本集-Replica Sets
- 1.1簡介
- 1.2 副本集的三個角色
- 1.3 副本集架構目標
- 1.4 副本集的創建
- 1.5 副本集的數據讀寫操作
- 1.6 主節點的選舉原則
- 1.7 故障測試
- 1.8 Compass連接副本集
- 1.9 SpringDataMongoDB連接副本集
2 分片集群-Sharded Cluster
- 2.1 分片概念
- 2.2 分片集群包含的組件
- 2.3 分片集群架構目標
- 2.4 分片(存儲)節點副本集的創建
- 2.5 配置節點副本集的創建
- 2.6 路由節點的創建和操作
- 2.7 Compass連接分片集群
- 2.8 SpringDataMongDB連接分片集群
- 2.9 清除所有的節點數據(備用)
3 安全認證
- 3.1 MongoDB的用戶和角色權限簡介
- 3.2 單實例環境
- 3.3 副本集環境
- 3.4 分片集群環境(擴展)
面試準備+復習資料分享:
為了應付面試也刷了很多的面試題與資料,現在就分享給有需要的讀者朋友,資料我只截取出來一部分哦,有需要的可以來找我獲取哈
獲取方式:點擊藍色字體即可免費獲取
600934292)]
[外鏈圖片轉存中…(img-7ZFI0GNQ-1624600934292)]
面試準備+復習資料分享:
為了應付面試也刷了很多的面試題與資料,現在就分享給有需要的讀者朋友,資料我只截取出來一部分哦,有需要的可以來找我獲取哈
獲取方式:點擊藍色字體即可免費獲取
[外鏈圖片轉存中…(img-jJAWFzAi-1624600934293)]