北京JAVA基礎面試30天打卡07

1. 緩存三大問題及解決方案

問題場景后果常用解決方案
緩存穿透請求的數據在緩存和數據庫中都不存在(惡意攻擊或查詢異常 ID)每次請求都會打到數據庫,導致 DB 壓力驟增- 緩存空值(短期緩存不存在的 key)
- 布隆過濾器(提前判斷 key 是否存在)
- 接口參數校驗、限流
緩存擊穿熱點 key 過期瞬間,大量請求同時訪問同一時間大量請求打到數據庫,可能壓垮 DB- 互斥鎖 / 分布式鎖(第一個請求構建緩存,其它等待)
- 邏輯過期(業務側判斷過期,異步更新)
- 提前刷新緩存
緩存雪崩大量 key 在同一時間過期(比如統一設置了相同 TTL)瞬時緩存失效,所有請求直達 DB,造成雪崩- 過期時間隨機化(TTL + 隨機值)
- 多級緩存(本地緩存 + 分布式緩存)
- 限流 + 服務降級

2. 如何保證 Redis 的高并發

Redis 本身是單線程處理命令(IO 多路復用 + 內存操作快),但要在高并發場景下保持性能,需要從以下幾方面優化:

網絡層優化

使用 pipeline 批量發送命令減少 RTT

合理配置連接池,避免頻繁建立連接

數據結構選擇

選擇合適的 Redis 數據類型(如 hash 存儲對象、zset 排序等)減少 key 數量

避免大 key(拆分成多個小 key)

分片與集群

使用 Redis Cluster 做數據分片,分攤 QPS 壓力

業務端可做讀寫分離(主寫,從讀)

熱點 key 優化

本地緩存(Caffeine / Guava)+ Redis 二級緩存

預熱熱點數據,減少直接訪問 DB

持久化與備份

結合 RDB + AOF(混合持久化)減少阻塞

合理調優 save、appendfsync 等參數

3. Redis 如何保證原子性

Redis 的原子性是依賴其單線程命令執行模型,以及事務機制:

單命令天然原子性

Redis 單線程按順序執行命令,不會被中斷

例如 INCR key、HSET key field value 是天然原子操作

事務(MULTI/EXEC)

將多個命令放到事務中執行,保證要么全執行,要么都不執行(但事務內命令不會回滾)

Lua 腳本

使用 EVAL 在服務端執行一段 Lua 腳本,腳本中所有操作是原子性的

常用于復雜的原子性業務邏輯(如扣庫存 + 記錄日志)加粗樣式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92677.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92677.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92677.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

后量子密碼學的遷移與安全保障:迎接量子時代的挑戰

在當今數字化時代,信息安全無疑是保障個人隱私、企業運營和國家安全的基石。我們依賴密碼學來保護敏感信息,從在線銀行交易到機密軍事通信,從醫療記錄的存儲到云計算中的數據傳輸,傳統密碼學為我們構筑起一道抵御惡意攻擊的防線。…

Android 獲取 UserAgent (UA) 的三種方式深度解析:差異、風險與最佳實踐

引言 在 Android 開發中,獲取 UserAgent (UA) 字符串是常見需求,尤其涉及網絡請求和 WebView 交互時。開發者通常使用三種方式獲取 UA: new WebView(context).getSettings().getUserAgentString()WebSettings.getDefaultUserAgent(context)…

Apache IoTDB 全場景部署:跨「端-邊-云」的時序數據庫 DB+AI 實戰

時序數據正成為現代工業物聯網的核心資產,從設備傳感器到業務分析,數據需跨越端、邊、云多個層級。本文將深入探討 **Apache IoTDB** 如何實現全場景統一時序數據管理,并融合AI能力實現智能決策。 --- ### 一、為什么需要「端-邊-云」協同? 在工業物聯網場景中: - **端側…

某地渣庫邊坡自動化監測服務項目

1. 項目簡介該礦山主要從事稀有金屬鉭、鈮及合金等的研發、生產、銷售和進出口業務。具有科學的管理理念、精良的工藝裝備、先進的技術水平、高素質的員工隊伍等綜合優勢,已形成鉭、鈮金屬及其合金材料等主要產業格局。公司產品被廣泛應用于電子、通訊、航空、航天、…

redis(2)-java客戶端使用(IDEA基于springboot)

一、準備工作首先確保:Linux 服務器上已安裝并啟動 Redis 服務Redis 已配置允許遠程連接(修改 redis.conf 文件)開發環境(IDEA)已準備好二、Spring Boot 項目配置 Redis1. 添加依賴在pom.xml中添加 Redis 相關依賴&…

解決 vscode 編輯 markdown 文件時退格鍵/backspace 刪除卡頓問題

文章目錄發現問題解決問題發現問題 使用 vscode 編輯 markdown 時,發現有時按下退格鍵 backspace 后等待很久才會生效,卡頓明顯 解決問題 從界面左下角的設置圖標,打開 vscode 的鍵盤快捷鍵設置頁面 Keyboard Shortcuts 搜索 backspace 按…

綠巨人VS Code多開項目單獨管理每個項目單獨使用一個不限制的augment

綠巨人VS Code多開項目單獨管理每個項目單獨使用一個不限制的augment 綠巨人VS前言 在AI輔助編程時代,Augment Code作為一款強大的代碼助手工具,為開發者提供了智能代碼補全、代碼生成等功能。然而,免費版本的使用限制(通常為每月…

Java 之抽象類和接口

一 、抽象類 1.1 、什么是抽象類? 就是當一個類不能描述具體的對象時,那么這個類就可以寫成抽象類。比如說 Animal ,我們知道 Animal 不能非常清楚的描述一個具體的動物,所以可以把 Animal 寫成抽象類。還有就是我們知道父類中的方…

【運維進階】WEB 服務器

WEB 服務器 WEB 服務器簡介 Web 服務器(Web Server)是指一種接收客戶端(如瀏覽器)發送的 HTTP 請求,并返回網頁內容或資源的程序或設備。它是萬維網(WWW)的核心組成部分。 Web 服務器的主要功能…

LLM(大語言模型)的“幻覺”本質原因

LLM(大語言模型)的“幻覺”本質原因 LLM(大語言模型)的“幻覺”(生成與事實不符但模型自信輸出的內容)本質上是其作為概率統計模型的底層機制與訓練、推理過程中多重限制共同作用的結果。從模型內部邏輯、訓練機制到推理環節 一、底層機制:基于“統計關聯”而非“真實…

java基礎(六)jvm

1. JVM內存的五大核心區域 一個幫手想象JVM運行程序時,需要劃分不同區域干不同的事。主要分為這五大塊,外加一個特殊幫手:1.1 程序計數器 (Program Counter Register) - 你的“任務進度條”干啥的: 專門記錄當前線程執行代碼執行…

計算機網絡:什么是AD域

什么是AD域? AD域(Active Directory Domain)是微軟基于Active Directory(活動目錄) 技術構建的網絡管理架構,用于集中管理網絡中的用戶、計算機、設備、權限等資源。它是企業級網絡環境中實現身份認證、資源共享和安全控制的核心組件。 AD域的核心功能與作用 集中化身份…

虛幻基礎:場景位置相對位置

能幫到你的話,就給個贊吧 😘 文章目錄絕對坐標:絕對坐標不會改變絕對坐標絕對方向x:世界的前y:世界的右z:世界的上相對坐標:坐標系的原點和方向會基于父組件 變換相對坐標相對方向:改…

【代碼隨想錄day 16】 力扣 106.從中序與后序遍歷序列構造二叉樹

視頻講解:https://www.bilibili.com/video/BV1vW4y1i7dn/?vd_sourcea935eaede74a204ec74fd041b917810c 文檔講解:https://programmercarl.com/0106.%E4%BB%8E%E4%B8%AD%E5%BA%8F%E4%B8%8E%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E…

vue+flask大模型寫詩詩詞推薦與可視化系統

文章結尾部分有CSDN官方提供的學長 聯系方式名片文章結尾部分有CSDN官方提供的學長 聯系方式名片關注B站,有好處!編號: F061 大模型詩詞推薦與可視化系統 在傳統文化數字化的浪潮下,我開發了這款詩歌問答大數據平臺,旨…

Apache Ignite 核心組件:GridClosureProcessor解析

這是一個 Apache Ignite 中非常核心的組件 —— GridClosureProcessor,它是 分布式閉包(Closure)執行的調度中樞,負責在集群節點上異步執行用戶提交的任務(如 Runnable、Closure)。 我們來逐層深入理解它的…

for循環詳解與實戰技巧

目錄 一、for循環語法 二、for循環執行流程 流程圖表示: 三、for循環實踐示例 示例:在屏幕上打印1~10的值 四、while循環與for循環對比 for循環和while循環都包含三個關鍵部分: 兩者的主要區別在于代碼組織方式: 五、練習…

winform中的listbox實現拖拽功能

文章目錄前言一、實現前言 winform中的listBox實現拖拽! 一、實現 winform中的listbox實現拖拽只需要實現四個事件 1、準備兩個listbox控件 其中listtarget,AllowDrop屬性設置為True。 2、實現四個事件 2.1MouseDown //在 MouseDown 事件期間&#x…

用 Docker 安裝并啟動 Redis:從入門到實戰

用 Docker 安裝并啟動 Redis:從入門到實戰Redis 作為一款高性能的鍵值對數據庫,在緩存、會話存儲、消息隊列等場景中被廣泛應用。本文將詳細介紹如何使用 Docker 快速安裝和啟動 Redis,包括基礎配置、數據持久化以及容器管理等核心操作&#…

ansible學習第一天

一:ansible基礎知識1.1 ansible的定義與工作原理簡述ansible是一個自動化運維工具,用于執行自動化任務,包括像配置管理,應用部署,任務執行等等,本質上來說也是基礎設施及代碼工具,通過可讀性較強…