Redis學習路徑(構建體系)

學習路徑

  • 掌握數據類型(分析底層數據結構)和緩存的基本使用? ?(理論+使用)?
  • 掌握 redis 實現高性能,高可靠、高可用技術? (理論)
  • 學習redis源代碼底層實現? (底層實現)

先來一個引言,比較宏觀的角度,先不考慮細節問題(先不談理論,按照正常的發展思路,看看需要解決哪些問題,于是衍生出哪些技術):

Redis是一款內存數據庫,這個數據存儲在內存中,如果說突然發生意外,Redis主機斷電了宕機了,那么內存中的數據就丟失掉了。所以我們需要像個辦法解決由于斷電、宕機導致的Redis在內存當中的數據丟失性問題?

你說,我們可以從新從MySQL后端數據庫來恢復,但是這樣太慢了,幾乎就是從頭開始。我們是否可以在 Redis 本機所在機器上永久的保存數據?

所以我們需要持久化的技術來解決。要持久化,就意味著數據必須保存到非易失性存儲介質磁盤上。(AOF寫操作日志、RDB內存快照持久化機制)。

這樣子,就不擔心這個數據丟失了。

但是,如果Redis發生了宕機,我們雖然有持久化,可以進行數據恢復,但是恢復是需要一定時間的,恢復的過程就沒法對外提供服務,這顯然也是不可接受的。

所以,我們需要解決在主要節點數據恢復期間還可以正常對外提供服務的問題? (主從復制)

我們就可以搞多個服務節點嘛,一個服務節點掛掉了,可以讓其他服務節點繼續提供嘛。如果這些服務節點有一個Boss 節點,其他的服務節點都是從Boss節點這里copy來的。Boss節點同步跟新這些子節點。如果是子節點掛掉,其實影響并不大,如果Boss節點掛掉,這個影響就特別大。

所以,我們需要解決在這個Boss節點掛掉的情況下,從下屬節點中從新選拔一個Boss出來?(手動主從切換? ?---》 自動主從切換)

選這個節點那肯定是跟 Boss 關系最近,最像的。(涉及一個選舉問題)

這些都是單個Redis實例之上的問題,如果說一個Redis實例太大了。會不會出現許多問題?比如說持久化產生的文件AOF,RDB會不會特別大?太大了,這個恢復過程會不會特別緩慢,多個節點從Boss主節點那里copy代價會不會變大?

要解決這個問題,我們是不是可以想到把數據分攤到多個 Redis 實例上面去,做一個分流。當然可以。不過需要考慮很多問題。負載均衡的問題,還有這個數據分片的問題。我們把整個需要緩存的數據切開多份。

每一份如何對應給Redis實例?用什么算法去對應?

我首先可以想到的就是Hash,因為hash天然對應很多槽位。我們可以對數據的key值進行Hash運算、映射到槽位,槽位是固定的。我們可以把槽位分配給Redis主機。

再思考一下,當我們維護多實例的時候,必不可少的需要通信,所以實例與實例之間應該依賴什么來進行通信,來達到一個狀態的同步,一致性。這必然也是需要解決的問題。但是小杰這塊尚且無法理解。所以慢慢沉淀。

如下這些標題,就是小杰之后寫這個博客后續要完成的,現在只是寫出自己的一個規劃目錄。后續再驅動性、方向性的步步完成。

Redis數據類型的使用

Redis底層數據結構

Redis緩存機制和應用

Redis高性能原理

Redis高可靠策略

  • 持久化機制

Redis高可用策略

  • 主從復制機制
  • 故障轉移,自動恢復

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

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

相關文章

Linux常用操作命令

Linux作為一種廣泛應用的操作系統,其強大的命令行工具使得用戶能夠高效地管理文件、處理數據和監控系統。在本文中,我們將深入 探討一些常用的Linux操作命令及其用法。 ls:列出當前目錄下的文件和子目錄。 ls [選項] [文件或目錄]常用選項&am…

Python實現MACD工具判斷信號:股票技術分析的工具系列(1)

Python實現MACD工具判斷信號:股票技術分析的工具系列(1) 介紹代碼rolling函數介紹核心代碼計算指數移動平均值計算MACD指標 完整代碼 介紹 先看看官方介紹: MACD (平滑異同平均線) 指標說明 DIF線:收盤價短…

#單片機(TB6600驅動42步進電機)

1.IDE:keil 2.設備:保密 3.實驗:使用單片機通過普通IO口控制TB6600驅動42步進電機 4.時序圖: TB6600 ENA、ENA-DIR-、DIRPUL-、PULB-、BA、A-VCC、GND使能電機(直接懸空不接)方向脈沖輸入(普通IO口模擬即可&#xff…

Linux系統編程7--線程 寫個測試腳本

Linux系統編程7–線程_寫個測試腳本 參考博客: Linux多線程編程初探 - 峰子_仰望陽光 - 博客園 (cnblogs.com) 我的PC是8核*16進程,所以在固定的時間點,我可以同時運行8 * 16的進程,更多的線程(任務管理器)…

【學習筆記】Diffusion擴散模型

導讀 Diffusion models是現在人工智能領域最火的方向之一,并引爆了AIGC領域,一大批創業公司隨之誕生。 AIGC(AI-Generated Content):人工智能創作內容的生產方式。 擴散模型Diffusion 擴散模型Duffison的訓練過程 …

等概率事件算法

1等概率的生成(0-8)范圍內的正整數 // Math.random 數據范圍[0,1) 且 是 等概率的產生隨機數 // 應用: // 1.生成等概率的整數(等概率的生成(0-8)范圍內的正整數 int value (int) (Math.random() * 9); System.out.println("value "…

非阻塞實現高效鍵盤掃描功能(STM32F4XX)

目錄 概述 1 原理分析 1.1 技術背景 1.2 系統硬件 1.3 STM32 IO(輸入模式)寄存器分析 1.3.1 輸入IO的功能描述 1.3.2 輸入配置 1.3.3 GPIO 寄存器(輸入模式相關) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

springboot,druid動態數據源切換

關鍵字:springboot,druid數據庫連接池,兩個數據源(可以切換成多個),事務管理 關于druid簡介傳送門:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具體分為四…

Doris【數據模型】

一、數據模型簡介 在 Doris 中,數據以表(Table)的形式進行邏輯上的描述。 一張表包括行(Row)和列(Column)。Row 即用戶的一行數據。Column 用于描述一行數據中不同的字段。 Column 可以分為兩…

autoware.universe中跟蹤模塊詳解,一看就懂!

目錄 問題:閱讀關鍵點:總結問題: 根據對預測模塊代碼的分析,發現預測框出現在點云前方的原因在于跟蹤框出現在點云前方 對rviz上的目標進行觀察后發現 車輛的檢測框先出來一段時間后,跟蹤框和預測框同步一塊出來 跟蹤框總是超出點云一部分 閱讀關鍵點: 每個跟蹤器最少要統計…

7.1.2 Selenium的用法1

目錄 1. 初始化瀏覽器對象和訪問頁面 2. 查找節點及節點交互 2.1 查找單個節點 (1)獲取方法1——特定方法 (2)通用方法 2.2 查找多個節點 2.3 節點交互 3. 動作鏈 4. 執行 JavaScript 之下拉進度條 5. 獲取節點信息 5.…

谷歌seo推廣秒收錄怎么做?

谷歌SEO推廣秒收錄想要做到,可以利用我們光算科技獨家技術,GSI快速收錄,通過技術手段和操作,幫你的網站快速被谷歌發現和記錄 這項技術具體核心就是GPC爬蟲池系統,這個系統是專門研究谷歌搜索引擎優化的規律和算法創造…

【QT】QTableView或QTableWidget 搭配QLineEdit實現數據的搜索顯示

在 Qt 中,QTableView 和 QTableWidget 都可以用來實現數據的搜索和顯示,但它們的適用場景和實現方式有所不同: QTableView 適用場景:QTableView 適用于更復雜的場景,尤其是當需要處理大量數據或需要高度定制化的表格時…

66-ES6:var,let,const,函數的聲明方式,函數參數,剩余函數,延展操作符,嚴格模式

1.JavaScript語言的執行流程 編譯階段:構建執行函數;執行階段:代碼依次執行 2.代碼塊:{ } 3.變量聲明方式var 有聲明提升,允許重復聲明,聲明函數級作用域 訪問:聲明后訪問都是正常的&…

拿下邊界機器進行內網滲透的方案

拿下機器后,使用代理訪問內網 windows環境:reGeorg與proxifier Linux環境:reGeorg與proxychains, 使用nmap等工具進行掃描,發現web服務的主機和其它信息。有時這些邊界機器上會記錄一些 內網服務器上的一些信息&…

QT C++實現點擊按鍵彈出窗口并顯示圖片/視頻|多窗口應用程序的設計和開發

一、介紹 首先,QT界面開發中主要大體分為2種多窗口的形式: 嵌入式: 新生成的窗口嵌入在主窗口內部獨立窗口: 以彈窗形式的新窗口生成和展示 這里就講解最簡單的:點擊案件后,跳出一個新窗口 二、代碼實…

利用FFMPEG 將RTSP流的音頻G711 轉碼為AAC 并 推流到RTMP

之前我們的視頻轉碼項目中 是沒有加入音頻的 現在 需要加入音頻 ,由于RTMP只支持AAC的 音頻流 而有的RTSP流的音頻編碼并不是AAC 大多數都是G711編碼 還分為G711A 和G711U 之前用ffmpeg命令行可以直接 完成轉碼 并推送到RTMP 但是考慮到無法獲取更詳細的狀…

Qt篇——QTableWidget保存表格數據到Excel文件中,讀Excel內容到QTableWidget

表格和excel例子如下圖所示&#xff1a; 一、QTableWidget保存表格數據到Excel文件中 代碼如下&#xff1a; &#xff08;pro文件中添加QT axcontainer&#xff09; #include <QAxObject>void MainWindow::saveTableToExcel() {QDateTime current_date_time QDateTi…

六、MQTT源碼簡單瀏覽

1、MQTT程序分層 1.1、MQTT客戶端工作流程 (1)連接MQTT服務器。 (2)客戶端向服務器發送訂閱主題。 (3)客戶端等待MQTT的消息。 (4)客戶端向服務器發送消息。 2.2、MQTT程序結構 APP層 while循環或一個進程中&#xff1a;等待消息&#xff0c;處理消息&#xff1b; 發送消…

[法規規劃|方案實操]數據資產入表,城投將獲融資新渠道

2023年8月&#xff0c;財政部發布了《企業數據資源相關會計處理暫行規定》&#xff0c;并從2024年1月1日開始實施&#xff0c;標志著數據資產正式納入企業的資產負債表。這一舉措被視為數據資產從理論走向實踐的重大一步。 數據資產入表對城投運營模式的影響 隨著全球經濟格局…