你好,我是小牛。
最近,面試了幾家大廠,基本都會問到中間件相關技能,問的比較多的就是消息中間件mq和redis緩存數據庫。
關於大廠為什么喜歡問這些,原因也比較簡單。因為實際工作中確實經常用到這些中間件,我們不會針對這些中間件專門去做測試,但是會基於一些業務場景去測試,如果不懂的話,測試起來肯定就一臉懵逼了。
限於篇幅,今天我們就先來聊聊中間件redis緩存數據庫,主要講關於工作中的一些使用,為什么使用redis,以及面試會經常問哪些問題。首先來說下redis是什么?它是一種非關系性數據庫,是介於接口服務端和數據庫的中間層。
比如一個查詢接口,第一次查詢從數據庫查數據,查完之后我們把數據存入redis緩存中,第二次查就可以直接從緩存中讀取數據,這就是它的用法。那么一般我們把什么數據存入redis緩存中呢?主要是一些復雜操作,耗費時間長的,比如數據庫查詢要600ms,但是redis只需要20ms。
而且,在接下來的幾個小時內,這個數據都不會變化,我們就可以存入緩存數據庫,為什么對時間有要求呢?因為緩存中的數據一般都是有過期時間的,這個開發寫代碼可以設置。
再來說下我們為什么使用redis,它的優勢是什么?主要有以下幾個原因:
讀取速度快。因為緩存是寫入內存中的,普通數據庫數據是寫在磁盤中的,基於內存的相比於磁盤速度是快很多的,但是也缺點,比如斷電之后,內存中的數據會消失,磁盤則不會。
高並發,減輕數據庫壓力。一旦涉及大數據量需求,比如一些商品搶購等,或者主頁瞬間訪問量大的時候,磁盤讀寫上千上萬次,有性能弊端。容易造成數據庫癱瘓,服務器宕機。數據庫頂不住,需要緩存分擔一部分壓力。
消息中間件:是利用高效可靠的消息傳遞機制進行異步的數據傳輸,並基於數據通信進行分布式系統的集成。通過提供消息隊列模型和消息傳遞機制,可以在分布式環境下擴展進程間的通信。
消息中間件一般有兩種傳遞模式:
1.點對點模式。
2.發布/訂閱模式。
點對點模式:消息生產者將消息發送到隊列中,消息消費者從隊列中接收消息。消息可以在隊列中進行異步傳輸。
發布/訂閱模式:發布訂閱模式是通過一個內容節點來發布和訂閱消息,這個內容節點稱為主題(topic),消息發布者將消息發布到某個主題,消息訂閱者訂閱這個主題的消息,主題相當於一個中介。主題是的消息的發布與訂閱相互獨立,不需要進行基礎即可保證消息的傳遞,發布/訂閱模式在消息的一對多廣播是采用。
消息中間件可以做什么
應用程序之間不采取直接通信,而是使用消息中間作為中介,做到數據的異步通信。開發人員不需要考慮網絡協議和遠程調用的問題,只需要通過各消息中間件所提供的api,就可以簡單的完成消息推送,和消息接收的業務功能。
消息的生產者將消息存儲到隊列中,消息的消費者不一定馬上消費消息,可以等到自己想要用到這個消息的時候,再從相應的隊列中去獲取消息。這樣的設計可以很好的解決,大數據量數據傳遞所占用的資源,使數據傳遞和平台分開,不再需要分資源用於數據傳輸,可以將這些資源用去其他想要做的事情上
————————————————
版權聲明:本文為CSDN博主「sinat_41523355」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/sinat_41523355/article/details/100515673
然后再來說一下redis的數據類型是什么?這個面試被問到的非常頻繁。主要有五種,字符串,哈希,列表,集合,有序集合。上面說的都是一些比較基礎的面試題,一般公司問上面那些就差不多了。但是如果更進一步的話,面試官就會問講一下redis的雪崩,緩存穿透,緩存擊穿機制是什么?