Java面試題:Redis1_Redis的使用場景和如何解決Redis緩存穿透問題

Redis使用場景常見問題

緩存

緩存三兄弟(穿透,擊穿,雪崩)
雙寫一致
持久化
數據過期策略
數據淘汰策略

分布式鎖

setnx,redisson

消息隊列,延遲隊列

解決Redis緩存穿透問題

緩存穿透問題

請求->redis緩存->mysql數據庫

當一個新請求到來時,先會訪問redis緩存尋找數據,如果在緩存中沒有找到數據,就會去數據庫中尋找,找到后將數據緩存到redis

當查詢一個不存在的數據時,數據庫中找不到數據,也就不會在緩存中寫入,即導致每次請求都會查找數據庫

如果出現大量的類似請求,就會頻繁地沖擊數據庫,導致數據庫宕機(攻擊)

緩存傳透簡而概之就是請求穿透了redis緩存直接沖擊數據庫

緩存穿透的解決方案

緩存空數據

即使查詢數據庫返回的數據為空,仍然對這個空結果進行緩存

這種方法雖然簡單,但是存在問題

首先是消耗內存,即使查詢不存在的數據也進行緩存

其次是可能出現不一致的問題

當數據庫中的不存在的數據被賦值時,緩存中的數據仍然為空,即數據庫和緩存數據不一致

布隆過濾器

在向redis查詢數據之前,會先查詢布隆過濾器

如果在布隆過濾器中不存在,那就會直接返回

在緩存預熱時,需要先預熱布隆過濾器

bitmap(位圖)

一個以bit為單位的數組,數組中的每個單元只能存儲二進制數0或1

存儲數據:

每個數據通過三個不同的hash函數獲取hash值,根據hash值的計算結果將數組的對應位置改為1

請添加圖片描述

每次查詢時,使用相同的hash函數進行計算,如果相同的數組位置都為1即代表存在,可以放行,如果不存在就直接返回

數組越大誤判率越低,數組越小誤判率越高
一般在5%以內,數據庫可以接受
RBloomFilter<String> bloomFilter
bloomFilter.tryInit(size,0.05);
//在布隆過濾器初始化數據,誤判率設置為0.05

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

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

相關文章

JVM(Java虛擬機)筆記

面試常見&#xff1a; 請你談談你對JVM的理解?java8虛擬機和之前的變化更新?什么是OOM&#xff0c;什么是棧溢出StackOverFlowError? 怎么分析?JVM的常用調優參數有哪些?內存快照如何抓取&#xff1f;怎么分析Dump文件&#xff1f;談談JVM中&#xff0c;類加載器你的認識…

前端最新面試題(基礎模塊HTML/CSS/JS篇)

目錄 一、HTML、HTTP、WEB綜合問題 1 前端需要注意哪些SEO 2 img的title和alt有什么區別 3 HTTP的幾種請求方法用途 4 從瀏覽器地址欄輸入url到顯示頁面的步驟 5 如何進行網站性能優化 6 HTTP狀態碼及其含義 7 語義化的理解 8 介紹一下你對瀏覽器內核的理解? 9 html…

【C++】vector常見的使用方式

前言&#xff1a;在上一篇中我們講到了string類的模擬實現&#xff0c;今天我們將進一步的去學習vector的一些常用的使用方法。 &#x1f496; 博主CSDN主頁:衛衛衛的個人主頁 &#x1f49e; &#x1f449; 專欄分類:高質量&#xff23;學習 &#x1f448; &#x1f4af;代碼倉…

命運方舟臺服注冊 命運方舟臺服怎么注冊?不會操作看這里

命運方舟臺服注冊 命運方舟臺服怎么注冊&#xff1f;不會操作看這里 命運方舟作為今年備受矚目的一款MMORPG類型游戲&#xff0c;在上線前的預約數量已經一次又一次創下新高。這款游戲的開發商Smile gate真是給玩家們帶來了一款讓人眼前一亮的作品。游戲創建在虛幻引擎的基礎…

USACO 2019 December Contest, BronzeProblem 2. Where Am I? 題解

這道題目通過例子可以看出查找最長的相同子串&#xff0c;下一個長度如果沒有找到相同的子串就是結果&#xff0c;需要寫三個循環&#xff0c;第一個循環是是否存在長度為len的相同子串&#xff0c;第二個循環是從左往右截取長度為len的子串&#xff0c;第三個循環的條件是j<…

用esp prog燒錄ESP32-C3板踩坑

附ESP32C3的GPIO一覽&#xff1a; vscode選擇Jtag燒錄&#xff0c;終端輸出esp_usb_jtag: could not find or open device&#xff1a; D:\Devtools\Espressif\tools\openocd-esp32\v0.12.0-esp32-20230921\openocd-esp32\bin\openocd.exe -f board/esp32s3-builtin.cfgOpen O…

【電路筆記】-帶阻濾波器

帶阻濾波器 文章目錄 帶阻濾波器1、概述2、典型帶阻濾波器配置3、帶阻濾波器示例14、陷波濾波器5、帶阻濾波器示例26、總結帶阻濾波器也稱為陷波濾波器,阻止并拒絕位于其兩個截止頻率點之間的頻率,并傳遞該范圍兩側的所有這些頻率。 1、概述 通過將基本 RC 低通濾波器與 RC …

Docker基礎命令(三)

同步docker容器中的時間和本地時間一致 背景: 在很多時候, 訓練模型的時候, 記錄的log日志中標記的時間和實際的時間不一致, 往往是容器時間和本地時間不一致照成的. 方案 場景一: 正在運行的容器&#xff0c;可以宿主機直接執行命令給某個容器同步時間 #方法1 直接在宿主機…

ElasticSearch教程(詳解版)

本篇博客將向各位詳細介紹elasticsearch&#xff0c;也算是對我最近學完elasticsearch的一個總結&#xff0c;對于如何在Kibana中使用DSL指令&#xff0c;本篇文章不會進行介紹&#xff0c;這里只會介紹在java中如何進行使用&#xff0c;保證你看完之后就會在項目中進行上手&am…

Arduino燒錄esp8266

default_encoding: cp936 Assume aggressive ‘core.a’ caching enabled. Note: optional global include file ‘arduino_modified_sketch_764314\Blink.ino.globals.h’ does not exist. Read more at https://arduino-esp8266.readthedocs.io/en/latest/faq/a06-global-bui…

【計劃】裝修相關感想

計劃 Summary 從去年年底開始規劃、設計、落實家里的裝修&#xff0c;2024年4月正式開始裝修&#xff0c;一個人探索和學習了很多知識和概念。 準備把這些東西做一些記錄和分享&#xff0c;一方面記錄一些裝修的流程和中間的小細節便于第二次裝修的時候避免&#xff1b;另一方…

Android設備實時監控藍牙的連接、配對、開關3種狀態

一、簡介 Android設備&#xff0c;需要實時監控本機藍牙連接其他藍牙設備的狀態&#xff0c;包含&#xff1a;連接、配對、開關3種狀態。本文介紹了2種方法&#xff0c;各有優勢&#xff0c;下面來到我的Studio一起瞅瞅吧~ 二、定時器任務 Handler 功能方法 定時器任務 Hand…

寫字靜不下心?不如試試這些“笨方法”

夏天悄悄熱起來啦&#xff5e;有人說&#xff0c;想踏踏實實寫一會兒&#xff0c;但又靜不下心&#xff0c;耐不住性子&#xff0c;快收下這四個小錦囊&#xff0c;與古人一起笨拙精進吧&#xff01;    1、不論輸贏      每次課前&#xff0c;暄桐林曦老師總會強調&am…

AlloyTeam Web前端大會:深入探索前端的無限可能

AlloyTeam Web前端大會&#xff1a;深入探索前端的無限可能 在數字化浪潮的推動下&#xff0c;Web前端技術日新月異&#xff0c;成為引領行業發展的重要力量。AlloyTeam Web前端大會作為業界的盛會&#xff0c;匯聚了眾多前端領域的精英&#xff0c;共同探討前端的未來發展趨勢…

內網-win1

一、概述 1、工作組&#xff1a;將不同的計算機按功能(或部門)分別列入不同的工作組 (1)、查看&#xff08;windows&#xff09; 查看當前系統中所有用戶組&#xff1a;打開命令行--》net localgroup查看組中用戶&#xff1a;打開命令行 --》net localgroup 后接組名查看用戶…

FreeRTOS任務調度機制(源碼講解)

任務的調度機制(核心是鏈表)&#xff01;&#xff01;&#xff01; 使用鏈表來管理任務 在我前面寫的FreeRTOS任務(深入到源碼進行分析)&#xff0c;我創建了三個任務&#xff0c;他們的優先級都是一樣的&#xff0c;所以他們在FreeRTOS中是輪流執行的&#xff0c;實際上&…

19.1 簡易抽獎

準備一個數組&#xff0c;里面添加10個獎品數據&#xff0c;讓獎品數據快速的在盒子中隨機顯示&#xff0c;通過按鈕控制盒子里面的內容停止。 效果圖&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

解釋Python中的PEP 8是什么 為什么它很重要

PEP 8 是 Python 的一個編碼規范&#xff0c;也稱為 Python 增強提案 8。它提供了一系列關于如何編寫清晰、一致的 Python 代碼的指導原則。這些原則涵蓋了代碼布局、命名約定、注釋、文檔字符串、編碼建議、導入語句、異常、全局變量、嵌套等方面。 為什么PEP 8很重要&#x…

npm install pubsub-js報錯的解決匯總

我在練習谷粒商城P83時&#xff0c;選擇分類時觸發向后端請求選擇分類catId綁定的品牌數據&#xff0c;發現前端控制臺報錯&#xff1a; "PubSub is not definded",找不到pubsub。 因為缺少pubsub包&#xff0c;所以開始安裝此包。 于是在網上一頓搜索猛如虎&…

xilinx ip自帶XDC只讀

檢查生成的IP核再目錄下顯示的文件類型是不是.xcix 如果是的話&#xff0c;重新生成為.xci 再二次編輯即可 或者 將框柱的部分不選擇&#xff0c;從新生成