本文轉自測試人社區,作者AD
原文鏈接:https://ceshiren.com/t/topic/23163
Redis 的基本概念
在沒有添加 Redis 的時候,後端的查詢流程是:
- 用户訪問頁面。
- 請求後端服務。
- 經過邏輯處理後,去數據庫查詢信息。
在添加 Redis 的之後,後端的查詢流程是:
- 用户訪問頁面。
- 請求後端服務。
- 經過邏輯處理後,先去緩存(Redis)中進行查詢,如果查到,則直接返回。
- 如果沒有查到信息,則直接向數據庫進行查詢,查詢到之後,數據庫會講數據信息同步到緩存(Redis)中,以便下次查詢。
什麼是擊穿
當 Redis 某個熱 key(比如首頁廣告)過期或者因為某些異常原因導致於無法從緩存中獲取,導致大量的併發訪問數據庫而崩潰。
舉個例子,比如雙十一活動中,大量用户同時會查詢首頁的某個廣告服務,正常查詢流程中,我們的服務會直接在緩存中進行查詢,查到了之後,返回給用户。
但是假設在這個過程中,這個廣告服務的 key 過期,即這個緩存失效了,那麼就會有大量的併發請求直接打到數據庫中,導致數據庫崩潰。
如果要復現這個測試場景,可以通過如下的測試步驟進行復現:
- 獲取熱 key 的列表(與運維溝通後獲取)。
- 模擬熱 key 失效的場景(比如登陸 Redis,直接將熱 key 刪除)。
- 查看研發是否有對應的容錯機制(降級或熔斷),從而能保證主要服務的正常運行。
什麼是穿透
緩存穿透就是指:用户不斷髮起請求緩存和數據庫中都沒有的數據。
在正常的請求過程中,如果在緩存(Redis)中沒有查到信息,則直接向數據庫進行查詢,查詢到之後,數據庫會講數據信息同步到緩存(Redis)中,以便下次查詢。
如果是緩存穿透的場景,比如傳一個用户 id 為-1,這個用户 id 在緩存裏面是肯定不存在的,因為每次請求數據庫中也沒有對應的數據信息,那麼數據庫也就不會同步到緩存(Redis)中,所以就會導致,每一次的請求,都會直接打到數據庫上,導致數據庫崩潰。
如果要復現這個測試場景,可以通過如下的測試步驟進行復現:
- 不停訪問對應服務的接口,傳遞一個不存在的數據的查詢請求。
- 查看研發是否有對應的容錯機制,從而能保證不會有大量的請求打在數據庫上。
推薦
Python全棧開發與自動化測試開發班
由淺入深實戰進階,從小白到高手
以Python全棧開發為基礎,深入教授自動化測試技能,為學員打造全面的技術能力。通過系統學習和實際項目實戰,學員將具備在職場中脱穎而出的競爭力。不僅能夠靈活運用Python進行開發,還能夠保障項目質量通過自動化測試手段。這是一個全面提升職業競爭力的機會。
課程詳情
Python開發必備基礎技能與項目實戰
Pvthon 編程語言/算法和數據結構/面向對象編程Web後端開發/前端開發/測試管理平台項目實戰
人工智能ChatGPT實戰
人工智能輔助學習各種開發和測試技能/Pytorch深度學框架/平台開發實戰
數據分析與自動化辦公
數據採集/Pandas與數據處理技術/ECharts與數據可視化技術/爬蟲實戰/自動化辦公/批量文件處理
UI自動化測試與高級項目實戰
Web自動化測試/App自動化測試/ PageObject設計模式
接口自動化測試
接口協議分析/Mock實戰/服務端接口測試
性能測試
性能測試流程與方法/JMeter 腳本參數化/Grafana監控系統搭建
簡歷指導與模擬面試
1V1簡歷指導/模擬真實面試/測試開發崗面試全攻略名企私教服務 名企專家1v1輔導/行業專家技術指導/針對性解決工作難題/績效提升輔導與晉升覆盤
課程亮點
名企私教服務 先學習後付費 高額獎學金
專屬社羣+晚自習在線答疑
5V1全方位輔導作業+考試強化學習效果
簡歷修改 模擬面試 就業內推 面試覆盤
福利一: 測試開發精品課免費學
福利二:免費領取技能圖譜&大廠面試題合集