redis簡述

来源:https://www.cnblogs.com/ychptz/archive/2022/08/25/16625855.html
-Advertisement-
Play Games

##redis是什麼? Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 redis是一個key-value存儲系統。和Memcached ...


redis是什麼?

Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字元串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。
這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。

redis的優點:

1、本質上是一個 Key-Value 類型的記憶體資料庫,很像memcached

2、整個資料庫統統載入在記憶體當中進行操作,定期通過非同步操作把資料庫數據 flush 到硬碟上進行保存

3、因為是純記憶體操作,Redis 的性能非常出色,每秒可以處理超過 10 萬次讀寫操作,是已知性能最快的Key-Value DB

4、Redis最大的魅力是支持保存多種數據結構(string,list,set,hash,sortedset),此外單個 value 的最大限制是 1GB,不像memcached只能保存 1MB 的數據

5、Redis也可以對存入的 Key-Value 設置 expire 時間,因此也可以被當作一個功能加強版的memcached 來用

缺點:

1、Redis 的主要缺點是資料庫容量受到物理記憶體的限制,不能用作海量數據的高性能讀寫,因此 Redis 適合的場景主要局限在較小數據量的高性能操作和運算上。

Redis預設支持16個資料庫,

可以通過配置databases來修改這一數字。客戶端與Redis建立連接後會自動選擇0號資料庫,不過可以隨時使用select命令更換資料庫。

Redis支持多個資料庫,並且每個資料庫是隔離的不能共用,並且基於單機才有,如果是集群就沒有資料庫的概念
埠:6379

緩存穿透

概述:指查詢一個一定不存在的數據,如果從存儲層查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到 DB 去查詢,可能導致 DB 掛掉。(redis查詢不到資料庫,出現很多非正常的url訪問---黑客攻擊)
現象:應用伺服器壓力變大, redis命中率降低 ,一直都是在查詢資料庫

解決方案:

1、查詢返回的數據為空,仍把這個空結果進行緩存,但過期時間會比較短

2、布隆過濾器:將所有可能存在的數據哈希到一個足夠大的 bitmap 中,一個一定不存在的數據會被這個 bitmap 攔截掉,從而避免了對DB的查詢

3、設置可訪問的白名單

4、進行實時的監控

緩存擊穿

概述:對於設置了過期時間的key,緩存在某個時間點過期的時候,恰好這時間點對這個Key有大量的併發請求過來,這些請求發現緩存過期一般都會從後端 DB 載入數據並回設到緩存,這個時候大併發的請求可能會瞬間把 DB 壓垮。(redis的某個key過期了,並大量訪問這個key)
現象:資料庫訪問瞬時增加, redis裡面沒有出現大量key過期 , redis正常運行

解決方案:

1、使用互斥鎖:當緩存失效時,不立即去load db,先使用如 Redis 的 setnx 去設置一個互斥鎖,當操作成功返回時再進行 load db的操作並回設緩存,否則重試get緩存的方法

2、永遠不過期:不要對這個key設置過期時間

3、預先設置熱門的數據

緩存雪崩

概述:設置緩存時採用了相同的過期時間,導致緩存在某一時刻同時失效,請求全部轉發到DB,DB 瞬時壓力過重雪崩。與緩存擊穿的區別:雪崩是很多key,擊穿是某一個key緩存。(大量的key同時過期)
現象:資料庫的壓力變大伺服器崩潰 --雪崩效應對底層的系統衝擊非常大

解決方案:

1.構建多級架構(nginx緩存+ redis緩存 + 其它的緩存)
2.使用鎖或者隊列(避免大量的線程堆資料庫進行一次性讀寫)
3.設置過期標誌,更新緩存
4.將緩存失效時間分散開,比如可以在原有的失效時間基礎上增加一個隨機值,比如1-5分鐘隨機,這樣每一個緩存的過期時間的重覆率就會降低,就很難引發集體失效的事件。

本文來自博客園,作者:阿薩德菩提子,轉載請註明原文鏈接:https://www.cnblogs.com/ychptz/p/16625855.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是MCUXpresso IDE下設置代碼編譯優化等級的幾種方法。 最近公司晶元設計團隊正在開發一款全新的基於 Cortex-M33 內核的晶元,為了保證晶元性能達標,驗證團隊將 coremark 基準測試程式也當作了一個測試用例,而在 R ...
  • 01_Linux基礎-部署-VMware-Xshell-Xftp-內核-安迪比爾定理 博客🔗:https://blog.csdn.net/cpen_web CentOS開源 免費 ==CentOS是Linux里的開源免費版本== 一. 配置虛擬機 1. 新建虛擬機 2. 放 鏡像文件 鏡像文件其實 ...
  • Silver Efex Pro是您將使用的最先進的黑白照片插件。憑藉其獨特的演算法以及一系列用於亮度,對比度和放大白色等變化的工具和調整,Silver Efex Pro 3可以藉助最全面的暗房風格控制項來掌握黑白攝影藝術,為大家帶來了20種不同的黑白傳奇電影效果。 詳情:Silver Efex Pro ...
  • 想要全方位的實現HDR增強效果小編推薦使用HDR Efex Pro 2 Mac版,這是一款一款全新的高動態(HDR)成像解決方案,內置33種HDR效果,用戶可在右側HDR進行細節微調,強大簡便。 詳情:HDR Efex Pro 2 for mac(HDR濾鏡軟體) Hdr Efex Pro2是一款全 ...
  • 很多小伙伴不知道Color Efex Pro 4是用來幹嘛的,小編給大家介紹一下,Color Efex Pro 4 for Mac全球最全面,最有創意的濾鏡組,用於色彩校正,潤飾和應用最令人驚嘆和最富想象力的攝影效果,釋放最大的創造力和想象力。 詳情:Color Efex Pro 4 for Mac ...
  • 1. 關聯關係 1.1 關聯關係概念說明 表與表之間的關係 : 1 對 1 1對多 多對多關係 ,通過主外鍵來實現。 外鍵在多的一方。比如員工和部門: 1個員工對應一個部門,一個部門可以有多個員工 要將表與表之間的關係:映射稱為 類與類之間的關係(準確的說應該是 對象和對象之間的關係 ) 一對一 夫 ...
  • 學習Stream的目的 函數式編程漸漸變成主流,為了看懂同事的代碼。 相對於傳統的編程方式,代碼更為簡潔清晰易懂。 使得併發編程變得如此簡單。 有效的避免了代碼嵌套地獄。(見樣例) if (條件1) { if (條件2) { if (條件3) { // 再嵌套下去都快見到Diablo了。 } } } ...
  • 目錄 一.OpenGL 波浪特效效果演示 1.原始圖片 2.效果演示 二.OpenGL 波浪特效源碼下載 三.猜你喜歡 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...