Redis常見面試問題

2021-10-07 17:11:59 字數 1375 閱讀 4659

redis穿透

單使用者請求,該資料在資料庫中就為空,那麼自然在redis中也不可能存在,這也被成為命中率問題.

解決的方案為:

1.簡單粗暴 該資料本來為空時,那我們就在redis中set乙個該資料為空的值,但是要注意的一點是

過期時間不要設定太長,

2:布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被這個bitmap攔截掉,從而避免了對底層儲存系統的查詢壓力;

redis雪崩

redis上面的熱資料大面積失效,導致大量的使用者請求一下子全落到了資料庫中,而對資料庫cpu和記憶體造成壓力,嚴重情況下可能造成系統宕機

解決方案:

1:大多數在系統設計的時候就會考慮大量請求落到資料庫的考慮,一般都會通過資料庫鎖或者佇列,來對併發量請求進行處理,來避免這一情況,

2:redis過期時間分散性,一般根據業務需求考慮,redis的資料的過期時間設定分散,從而簡單避免這一情況的發生;

redis資料型別

1.hash,2.string,3.list,4.set,5.zset,

zset的特別之處

zset主要有乙個分值權重,可能通過分值進行從小到大的排列;

redis擊穿

值得一提的是,redis擊穿和redis穿透還是略有不同的,redis擊穿是乙個熱門資料,有大量的請求,但是這個redis資料過期時間到來,導致大量的使用者請求一下子全落到了資料庫中,

解決方案:

在這個資料即將失效的時候,設定乙個臨時key來鎖住這個key,等到請求結束的時候再刪除

快取預熱

每當618雙十一來臨的時候可想這一天的使用者請求是難以想象的龐大,所以盡可能的把使用者想要訪問得熱資料提前放到redis記憶體中,這樣當天就會減少資料庫的壓力,定時更新,提前預熱;

快取更新

1.定時去更新redis;

2.請求的時候判斷該資料是否已失效,再從資料庫中查詢,set到redis中;

為什麼redis速度快

1.基於記憶體去做的,能影響redis速度的只有硬體的限制,記憶體的大小,redis的瓶頸最有可能是機器記憶體的大小或者網路頻寬

2.單執行緒的,不用進行上下文的切換;

3.非阻塞流io

redis的持久機制

1.rdb快照,2.aof命令記錄檔案,當兩種方式同時開啟時,資料恢復redis會優先選擇aof恢復。

redis集群同步問題

1.配置主從同步,2.master主動同步

SVM常見面試問題

答 幾何間隔與樣本的誤分次數間存在關係 其中的分母就是樣本到分類間隔距離,分子中的r是所有樣本中的最長向量值 答 會,超平面會靠近樣本少的類別。因為使用的是軟間隔分類,而如果對所有類別都是使用同樣的懲罰係數,則由於優化目標裡面有最小化懲罰量,所以靠近少數樣本時,其懲罰量會少一些。比如 假設理想的分隔...

C 常見面試問題

一 抽象與介面的區別 1,抽象 abstract 1 抽象類中可以有抽象方法,也可沒有 2 抽象方法包含實現,也可以由子類實現 3 抽象類不能被sealed修飾,只能使用abstract關鍵字 4 抽象方法不能在抽象類外部宣告 5 抽象類只能單繼承 6 可以有虛方法 virtual 在不同的繼承中,...

SpringMVC 常見面試問題

springmvc流程 原理 流程圖 亂碼問題 重定向和 在返回值前面加 redirect 或 forward return forward 跳轉的頁面或路由 重定向和 的區別 全域性異常 自定義實現spring的全域性異常解析器handlerexceptionresolver springboot...