Redis資料

?Redis是什么?

Redis(Remote Dictionary?Server)是一個開源的、基于內存的鍵值數據庫,支持多種數據結構,可用作數據庫、緩存和消息中間件。主要特點包括:

  • 基于內存操作,讀寫性能極高
  • 支持持久化,可將內存數據保存到磁盤
  • 支持主從復制和高可用集群
  • 提供豐富的數據結構和操作命令
Redis為什么這么快?
  • 內存操作:數據存儲在內存中,訪問速度比磁盤快幾個數量級
  • 單線程模型:避免多線程上下文切換和鎖競爭
  • IO多路復用:使用epoll/kqueue等機制實現高效網絡通信
  • 高效數據結構:專門優化的數據結構實現(如SDS、跳躍表等)
  • 單線程模型也造成cpu不能充分利用

Redis數據結構

1. 五種基本數據類型及使用場景
數據類型特點使用場景
String二進制安全,最大512MB緩存、計數器、分布式鎖
List雙向鏈表,元素可重復消息隊列、最新消息排行
Hash鍵值對集合存儲對象、購物車
Set無序唯一集合標簽、共同好友
ZSet有序集合(帶分數)排行榜、延時隊列
2. 特殊數據類型
  • BitMap:二值統計(簽到、在線狀態)
  • HyperLogLog:基數統計(UV統計)
  • GEO:地理位置(附近的人)
  • Stream:消息流(替代Kafka)

3. 底層數據結構實現
String:SDS(簡單動態字符串),支持動態擴容和二進制安全
List:3.2版本前使用ziplist或linkedlist,3.2后統一使用quicklist
Hash:ziplist(元素少時)或hashtable
Set:intset(整數集合)或hashtable
ZSet:ziplist或skiplist+dict組合

三、Redis持久化機制

1. RDB與AOF對比
維度RDBAOF
原理定時快照記錄寫操作日志
性能高(二進制壓縮)較低(文本追加)
恢復速度慢(需重放命令)
數據完整性可能丟失最后一次快照后的數據更可靠
文件大小

四、Redis高可用架構

1. 主從復制
  • 作用:數據冗余、讀寫分離、故障恢復
  • 同步過程
    • 全量同步:從節點初次連接時,主節點生成RDB發送給從節點
    • 增量同步:主節點將寫命令發送給從節點
2. 哨兵模式(Sentinel)

是一種用于構建高可用性 Redis 集群的解決方案。它通過監控 Redis 實例的狀態并自動進行故障轉移,提供了客戶端重定向機制以確保應用程序可以正常訪問 Redis

  • 功能:監控、自動故障轉移、配置中心

圖片轉載自

3. Redis Cluster
  • 數據分片:16384個slot,每個節點負責部分slot
  • 優點:支持海量數據存儲和高并發寫
  • 限制:不支持跨slot事務,多key操作需使用hash tag

五、Redis緩存問題與解決方案
1. 緩存穿透
現象:查詢不存在的數據,繞過緩存直接訪問數據庫
解決方案:
布隆過濾器攔截
緩存空對象(設置短過期時間)

對業務參數進行校驗,不合法的值直接返回
2. 緩存擊穿
現象:熱點key過期瞬間,大量請求直接訪問數據庫
解決方案:
互斥鎖(如Redis分布式鎖)
熱點數據永不過期
3. 緩存雪崩
現象:大量key同時過期,導致請求直接訪問數據庫
解決方案:
設置隨機過期時間,均勻分布key的失效時間
多級緩存
熔斷降級機制

六、Redis內存管理

1. 過期鍵刪除策略
  • 惰性刪除:訪問時檢查是否過期,過期則刪除
  • 定期刪除:定時隨機檢查并刪除過期鍵

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
? ? ? ? ? ? ? ? ? ? ? ??
原文鏈接:https://blog.csdn.net/weixin_47242663/article/details/149520081

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

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

相關文章

CAMEL-Task2-Agent的構成組件

CAMEL-Task2-Agent的構成組件 本文筆記主要關于2.7章節:CAMEL框架中agents如何使用工具。 一、工具說明 為什么要額外使用工具? agents本身的知識和能力有限,比如一些問題需要聯網搜索才能準確回答(而不是亂答,即“…

數據整理自動化 - 讓AI成為你的數據助手

文章目錄數據整理自動化 - 讓AI成為你的數據助手引言:數據整理的時代挑戰與機遇1. 常見數據整理場景分析1.1 數據整理的多元場景圖譜1.2 數據質量問題的分類與影響1.3 傳統處理方法的局限性2. AI與傳統腳本的協同工作流2.1 智能數據整理架構設計2.2 協同工作流的最佳…

react速成

項目目錄package.json文件:包含核心兩個依賴(react、react-dom)和命令(start、bulid)src:源碼目錄,開始之用的到index.js和App.jsindex.js:是項目的入口,一切的運行起點/…

Maven的進階使用(上)

pom.xml文件 就像 Make 的 MakeFile、Ant 的 build.xml 一樣,Maven 項目的核心是 pom.xml。POM(全稱 Project Object Model,項目對象模型 ) 定義了項目的基本信息,用于描述項目如何構建,聲明項目依賴,等等。 Gredele--…

【最后203篇系列】034 使用SQLite構建簡單的任務管理

表數據同步的斷點續傳 有時候需要將一個表的數據復制到另一個表,循環是常用的方式。當表比較大,執行的時間很長,會有很多因素引起失敗。我希望可以比較簡單的跑數,所以做一個簡單的任務系統。 SQLitre是嵌入式數據庫,這…

SpringCloud Alibaba核心知識點

Spring Cloud Alibaba 是阿里巴巴開源的一套微服務解決方案,與 Spring Cloud 生態深度集成。以下是其主要組件及其功能:Nacos服務注冊與發現:支持動態服務注冊、健康監測及DNS-Based服務發現。配置中心:提供分布式配置管理&#x…

LeetCode 分類刷題:34. 在排序數組中查找元素的第一個和最后一個位置

題目給你一個按照非遞減順序排列的整數數組 nums,和一個目標值 target。請你找出給定目標值在數組中的開始位置和結束位置。如果數組中不存在目標值 target,返回 [-1, -1]。你必須設計并實現時間復雜度為 O(log n) 的算法解決此問題。示例 1:…

自建知識庫,向量數據庫 (十二)之 文章向量搜索——仙盟創夢IDE

“未來之窗” 文章向量搜索:多領域應用與學習指南 在數字化浪潮中,“未來之窗” 文章向量搜索憑借其獨特的技術優勢,在酒店、電商、診療及知識庫等多個領域展現出巨大的應用潛力,為各行業的信息處理與檢索帶來了全新的視角和高效…

深度剖析:基于反射的.NET二進制序列化器設計與實現

🔍 深度剖析:基于反射的.NET二進制序列化器設計與實現本文將從底層原理到高級優化,全面剖析一個基于反射的.NET二進制序列化器的設計與實現,涵蓋類型系統處理、內存布局、遞歸算法、性能優化等核心主題。1. 設計哲學與架構總覽 1.…

如何在 Ubuntu 上安裝和配置 Samba ?

Samba 是一個開源程序,用于文件共享和網絡打印,使用 SMB 協議。現在基本上用于提供在 Windows 上可訪問的 Linux 文件共享系統。 本文介紹如何在 Ubuntu 上安裝和配置 Samba 服務器,以便跨文件夾共享網絡上不同的計算機。 Update Your Syst…

MATLAB實現CNN-GRU-Attention時序和空間特征結合-融合注意力機制混合神經網絡模型的風速預測

該 MATLAB 代碼實現了一個基于 CNN-GRU-Attention 時序和空間特征結合-融合注意力機制混合神經網絡模型的風速預測。以下是對代碼的簡要分析:一、主要功能 該代碼用于風速時間序列預測,使用歷史風速特征數據(18個特征,75天&#x…

【升級版】從零到一訓練一個 0.6B 的 MoE 大語言模型

前文:從零到一訓練一個 0.6B 的 MoE 大語言模型,本次升級完全重新從零開始重新訓練。主要升級如下: 替換預訓練數據集,使用序列猴子通用文本數據集進行預訓練。使用更先進的訓練方法。新增思考模式控制,可通過添加/th…

51單片機-實現定時器模塊教程

本章概述思維導圖: 51單片機驅動定時器模塊 CPU時序簡介 CPU時序定義了CPU內部操作的時間節奏,以下從四個時序周期進行逐步解析; 1、振蕩周期 振蕩周期:CPU內部時鐘源產生的最小時間單位,由晶振或內部振蕩器決定&am…

7.Kotlin的日期類

以下是 Kotlin 中常用時間類(基于 java.time 包)的核心方法及使用示例,參考數組方法的表格形式,按類分類展示: 一、LocalDate(日期:年/月/日)方法簽名返回值說明示例now(): LocalDat…

【Big Data】Hive技術解析:大數據倉庫的SQL橋梁

Hive作為Apache頂級項目,是Hadoop生態系統中最具影響力的SQL查詢引擎,它解決了大數據處理與傳統SQL技能之間的鴻溝。Hive的核心價值在于將類SQL查詢語言HiveQL無縫轉換為分布式計算框架MapReduce的任務,使數據分析師能夠利用熟悉的SQL語法操作…

Ubuntu2204server系統安裝postgresql14并配置密碼遠程連接

前言: 最近因項目需要安裝postgresql14,系統是ubuntu2204server系統,安裝好后發現無法實現遠程連接,解決了之后在此記錄一下解決方法。 疑問: 什么情況下需要配置postgresql遠程連接? ①如果是postgresql和…

【嵌入式】【搜集】狀態機、狀態遷移圖及狀態模式材料

文章目錄狀態機狀態機狀態機定義與核心特點狀態機總結狀態遷移圖狀態遷移圖狀態遷移圖核心概念與要素狀態遷移圖常見錯誤與規避狀態遷移圖總結狀態模式狀態模式狀態模式核心概念與組成狀態模式核心價值與適用場景狀態模式優缺點分析進階優化技巧行為模式總結狀態機 狀態機 狀…

Java學習歷程14——制作一款五子棋游戲(4)

上次我們基本實現了五子棋游戲的功能,這次我們進行一些優化和添加一些便于用戶使用的功能。新增功能及優化一、復盤功能復盤功能就是指在下完一局棋后,我們可以通過復盤按鈕使本局棋的所有棋子重頭開始自動下一遍。分析得知,我們首先要保存以…

記錄一次el-table+sortablejs的拖拽bug

bug回顧出現bug的情況時 當編輯表格過于緊湊的時候 有些非必要編輯或需要一眼看到的數據 移動到了el-table-column typeexpand時 同事:怎么拖拽功能用不了了 ok開始檢查代碼 當原來是個簡單的編輯表格 不涉及展開和簡單拖拽時 不會出現問題 解決了 出現了展開行以后…

利用go sort.Sort()排序自定義切片

1 sort.Sort()簡介2 核心功能3 調用前提4 代碼示例 1 sort.Sort()簡介 Go語言中的sort.Sort函數是標準庫提供的通用排序接口 2 核心功能 核心功能支持多種類型進行快速排序 基礎類型支持?:內置Ints、Float64s、Strings等函數直接排序常見切片 自定義排序?&a…