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...