redis主從模型與對象模型

redis淘汰策略

首先我們要明確這里說的淘汰策略是淘汰散列表中的key-value,而不是value中的各個數據結構

過期key中

volatile-lru
從設置了過期時間的鍵中,移除最近最少使用的鍵(LRU算法)。適合需要優先保留高頻訪問數據的場景。

volatile-lfu
從設置了過期時間的鍵中,移除使用頻率最低的鍵(LFU算法)。適合需要根據訪問頻率淘汰的場景。

volatile-ttl
從設置了過期時間的鍵中,優先移除剩余存活時間(TTL)最短的鍵。適合需要優先淘汰即將過期數據的場景。

volatile-random
從設置了過期時間的鍵中隨機移除鍵。適合對淘汰順序無特殊要求的場景。

所有key

allkeys-lru
從所有鍵中移除最近最少使用的鍵,無論是否設置過期時間。適用于緩存系統,優先保留熱點數據。

allkeys-lfu
從所有鍵中移除使用頻率最低的鍵。適用于需要嚴格按訪問頻率管理的緩存。

allkeys-random
從所有鍵中隨機移除鍵。適用于數據重要性均勻分布的場景。

禁止淘汰

allkeys-random
從所有鍵中隨機移除鍵。適用于數據重要性均勻分布的場景。

持久化

因為redis數據庫是內存數據庫,所以在 關閉系統時如果沒有把數據存在磁盤中就會失去數據。

Redis提供兩種主要的持久化方式:RDB(Redis Database)和AOF(Append Only File)。兩種方式各有優缺點,可根據實際需求選擇或結合使用。

AOF持久化

aof 日志存儲的是 Redis 服務器的順序指令序列,aof 日志只記錄對內存修改的指令記錄;通過重放(replay)aof 日志中指令序列來恢復 Redis 當前實例的內存數據結構的狀態;

AOF分類

always:每次操作都進行同步

every_sec:每秒都進行同步

no:沒有特定同步策略,根據cache line刷到主存的策略進行持久化

AOF-rewrite

aof 持久化策略會持久化所有修改命令;里面的很多命令其實可以合并或者刪除; aof rewrite 在 aof 的基礎上,滿足一定策略則 fork 進程,根據當前內存狀態,轉換成一系列的 redis 命令,序列化成一個新的 aof 日志文件中,序列化完畢后再將操作期間發生的增量 aof 日志 追加到新的 aof 日志文件中,追加完畢后替換舊的 aof 日志文件;以此達到對 aof 日志瘦身的目 的;

優缺點

優點:數據可靠,丟失較少,持久化過程代價低

缺點:aof文件過大,數據恢復慢

RDB持久化

基于 aof 或 aof 復寫文件大的缺點,rdb 是一種快照持久化;它通過 fork 主進程,在子進程中將內 存當中的數據鍵值對按照存儲方式持久化到 rdb 文件中;rdb 存儲的是經過壓縮的二進制數據;

先fork進程防止redis進行增刪查改影響,進行寫時復制,此時fork后的子進程的虛擬地址指向的物理存儲空間和父進程一樣,這時父進程觸發寫保護中斷,如果有服務器連接redis進行操作就會使父進程指向新的物理內存地址。

優缺點

優點:rdb文件小,數據恢復快

缺點:數據丟失多,持久化過程代價高

redis主從復制

主要用來實現 redis 數據的可靠性;防止主 redis 所在磁盤損壞,造成數據永久丟失;

master是主redis,兩個從redis,從redis會連接主redis,獲取最新的數據,如果

全量數據同步

增量數據同步

redis哨兵模式

哨兵會檢測主redis和從redis是否正常,如果主redis出現差錯,哨兵會從從redis中選一個數據最新的做主redis并把信息傳遞給client

redis cluster集群

Redis cluster 將所有數據劃分為 16384(2的14次方)個槽位,每個 redis 節點負責其中一部分槽位。 cluster 集群是一種去中心化的集群方式; 如圖,該集群由三個 redis 節點組成,每個節點負責整個集群的一部分數據,每個節點負責的數據 多少可能不一樣。這三個節點相互連接組成一個對等的集群,它們之間通過一種特殊的二進制協議 交互集群信息; 當 redis cluster 的客戶端來連接集群時,會得到一份集群的槽位配置信息。這樣當客戶端要查找某 個 key 時,可以直接定位到目標節點。 客戶端為了可以直接定位(對 key 通過 crc16 進行 hash 再對 取余)某個具體的 key 所在節 點,需要緩存槽位相關信息,這樣才可以準確快速地定位到相應的節點。同時因為可能會存在客戶 端與服務器存儲槽位的信息不一致的情況,還需要糾正機制(通過返回 -MOVED 3999 127.0.0.1:6479 ,客戶端收到后需要立即糾正本地的槽位映射表)來實現槽位信息的校驗調整。 另外,redis cluster 的每個節點會將集群的配置信息持久化到配置文件中,這就要求確保配置文件 是可寫的,而且盡量不要依靠人工修改配置文件;

更多資料在:https://github.com/0voice查詢

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

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

相關文章

快速搭建開源網頁編輯器(vue+TinyMCE)

文章目錄 Tiny MCE 安裝方法 1. 安裝node.js 2. 創建vue3項目 3. 安裝TinyMCE依賴并使用 (1)在component文件夾創建Editor.vue文件 (2)編輯App.vue文件 (3)運行項目 (4)獲取并設置API key (5)設置中文菜單 Tiny MCE 安裝方法 1. 安裝node.js 下載地址:https://nod…

ADK【4】內置前端調用流程

文章目錄說明ADK內置前端ADK內置前端開啟流程說明 本文學自賦范社區公開課,僅供學習和交流使用,不用作任何商業用途! ADK內置前端 ADK作為最新一代Agent開發框架,不僅功能特性非常領先,而且還內置了非常多的工具&am…

LLMs之GPT-5:OpenAI 發布更智能、更快速、更有用的 AI 模型—內置思考能力,賦能人人專家級智能—技術突破、性能評估與安全保障全面解讀

LLMs之GPT-5:OpenAI 發布更智能、更快速、更有用的 AI 模型—內置思考能力,賦能人人專家級智能—技術突破、性能評估與安全保障全面解讀 導讀:2025年8月7日,OpenAI 發布了 GPT-5,這是他們目前最智能的 AI 系統。它在編…

Java 中操作 R 的全面指南

Java 中操作 R 的全面指南 引言 Java作為一種廣泛使用的編程語言,具有跨平臺、高性能、可擴展等特點。隨著大數據和機器學習的興起,Java在處理和分析復雜數據集方面發揮著越來越重要的作用。R語言,作為一種專門用于統計計算和圖形展示的語言,同樣在數據分析領域有著舉足輕…

數據結構——優先級隊列(PriorityQueue):一文解決 Top K 問題!

目錄 1.優先級隊列 2. 堆的概念 3. 堆的存儲方式 4. 堆的創建 4.1 向下調整 4.2 堆的創建 4.3 堆的插入 4.4 堆的刪除 5.用堆模擬實現優先級隊列 6.常用接口的介紹 6.1 PriorityQueue 的特性 6.2 PriorityQueue 的方法 7. Top K問題 1.優先級隊列 隊列是一種先進先…

C語言自定義類型深度解析:聯合體與枚舉

在C語言中,自定義類型為數據組織提供了極大的靈活性。除了常用的結構體,聯合體(共用體)和枚舉也是非常重要的自定義類型。本文將結合實例,詳細解析聯合體和枚舉的特性、用法及實際應用場景。 一、聯合體(Un…

Numpy科學計算與數據分析:Numpy數據分析基礎之統計函數應用

Numpy統計函數實戰:數據的聚合與分析 學習目標 通過本課程的學習,學員將掌握Numpy中用于統計分析的關鍵函數,如求和(sum)、平均值(mean)、標準差(std)等,能夠熟練地在實際數據集中應用這些函數進行數據的聚合與分析。 相關知識…

從引導加載程序到sysfs:Linux設備樹的完整解析與驅動綁定機制

摘要本報告旨在為嵌入式Linux開發者詳細梳理設備樹(Device Tree, DT)在系統啟動中的完整解析流程。報告將從引導加載程序(Bootloader)如何準備和傳遞設備樹二進制文件(DTB)開始,逐步深入到內核如…

基于深度學習的污水新冠RNA測序數據分析系統

基于深度學習的污水新冠RNA測序數據分析系統 摘要 本文介紹了一個完整的基于深度學習技術的污水新冠RNA測序數據分析系統,該系統能夠從未經處理的污水樣本中識別新冠病毒變種、監測病毒動態變化并構建傳播網絡。我們詳細闡述了數據處理流程、深度學習模型架構、訓練…

寶塔面板配置Nacos集群

一、環境準備 準備三臺及以上的服務器,我這里準備了3臺服務器,172.31.5.123~125;分別安裝好寶塔面板,軟件商店里安裝nacos;二、Nacos集群配置 配置數據庫連接:? 進入每臺服務器上 Nacos 解壓后…

Spring Boot 3.x 全新特性解析

Spring Boot 是企業級 Java 開發中最常用的框架之一。自 Spring Boot 3.x 發布以來,其引入的一系列重大變更與優化,為開發者提供了更現代、更高效的開發體驗。本文將重點解析 Spring Boot 3.x 的關鍵特性及其對項目架構的影響。 一、基于 Jakarta EE 10 …

2025.8.10總結

今天晚上去跑了2公里,跑完還挺爽的,然后花了1.5個小時去公司刷題,沒有進行限時練,花了一周的時間才做完這題,共找了20個bug,雖然沒有進行限時練,但我仿佛對測試技術掌握得更好了,知道…

qt中實現QListWidget列表

使用最基本的QListWidgetItem來創建列表項,具體使用下面setText、setIcon、addItem這三個方法#include "mainwindow.h" #include "ui_mainwindow.h" #include "QDebug"enum CustomRoles {IdRole Qt::UserRole, // 存儲IDPhoneR…

nginx-主配置文件

nginx-主配置文件一、主配置文件nginx.conf內容二、修改配置的文件后的操作三、配置虛擬主機的域名1. 修改nignx.conf配置文件2. 新建域名對應的網頁根目錄3. 重載nginx配置4. 驗證一、主配置文件nginx.conf內容 [rootweb1 conf]# cat nginx.conf#user nobody; # nginx woke…

DBSACN算法的一些應用

以下是 DBSCAN 算法在 Python 中的幾個典型應用示例,涵蓋了基礎使用、參數調優和可視化等方面:import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import DBSCAN from sklearn.datasets import make_moons, make_blobs from skl…

java9學習筆記-part1

G1 成為默認垃圾回收器在 Java 8 的時候,默認垃圾回收器是 Parallel Scavenge(新生代)Parallel Old(老年代)。到了 Java 9, CMS 垃圾回收器被廢棄了,G1(Garbage-First Garbage Collector&#x…

【github.io靜態網頁 怎么使用 github.io 搭建一個簡單的網頁?】

這里是一張展示 GitHub Pages 靜態網站架構與部署流程的示意圖,可以幫助你更直觀理解整個流程。 要使用 github.io(GitHub Pages)搭建一個簡單的網頁,你可以按照以下步驟操作: 快速入門:個人網站&#xff…

記錄一次ubuntu20.04 解決gmock not found問題的過程

在電腦上源碼編譯moveit,系統是ubuntu20.04,有三個電腦,分別叫做A,B,C好了,A和C都可以很順暢地走流程編譯通過,但是B遇到了gmock not found的問題,一開始沒當回事,感覺重裝下庫,或者…

Java基礎編程核心案例:從邏輯到應用

Java編程的核心在于將邏輯思維轉化為可執行的代碼。本專欄通過8個實用案例,覆蓋條件判斷、循環結構、數組操作、用戶交互等基礎知識點,展示如何用Java解決實際問題,從簡單游戲到數據計算,逐步構建編程思維。 案例一:剪…

Starlink衛星終端對星策略是終端自主執行的還是網管中心調度的?

以下文章首先來源于Google Gemini的Deep Research的內容,在Deep Research的報告參考了SpaceX公開信息、FCC技術報告、相關專利(如US9906292B2)以及學術研究的綜合分析,并參考了RFWirelessWorld和APNIC博客等二次來源。 文章完成之后,前后發給了Grok和deepseek,讓Grok和d…