Valkey與Redis評估對比:開源替代方案的技術演進

#作者:朱雷

文章目錄

  • 1 概述
    • 1.1內存數據結構存儲核心特性
    • 1.2主流內存數據結構存儲設計與適用場景
    • 1.3目前主流內存數據結構存儲對比
  • 2 Valkey 說明
    • 2.1 哨兵架構設計
    • 2.2 集群架構設計
    • 2.3 valkey 使用企業和業內生態?
  • 3 評估指標
  • 4 評估結果

1 概述

內存數據結構存儲?是指將數據以特定的邏輯和物理形式直接組織在計算機主內存(RAM)中,以支持高效的動態操作(如增刪改查)和實時處理。其核心目標是利用內存的高速讀寫能力,結合合適的數據結構,滿足對性能要求嚴苛的場景需求。

1.1內存數據結構存儲核心特性

1.? 超低延遲?

  • 內存訪問速度?:RAM的訪問延遲在納秒級(約50-100ns),而磁盤I/O延遲在毫秒級(約10ms),兩者相差10萬倍。
  • 適用場景?:高頻交易系統、實時推薦引擎、緩存層(如Redis、Memcached)。
    2.? 動態操作效率?
  • 隨機訪問與原地修改?:內存數據結構支持直接通過指針或偏移量訪問元素,無需磁盤尋道或塊讀取。
  • 對比磁盤存儲?:如B樹在磁盤上高效,但內存中哈希表或跳表的查找效率更高(O(1) vs O(log n))。
    3.? 靈活性與可擴展性?
  • 動態內存分配?:支持運行時按需擴展(如鏈表、動態數組),而磁盤存儲需預分配塊或處理碎片化。
  • 復雜邏輯結構?:內存中可高效實現圖、樹等復雜結構,而磁盤存儲需額外設計索引或壓縮策略。

1.2主流內存數據結構存儲設計與適用場景

在這里插入圖片描述

1.3目前主流內存數據結構存儲對比

在這里插入圖片描述

2 Valkey 說明

Valkey 是一個開源(BSD-3 許可)的內存數據結構存儲,可用作數據庫、緩存、消息代理和流引擎。Valkey 提供多種數據結構,例如 字符串、哈希、列表、集合、支持范圍查詢的有序集合、位圖、超級日志、地理空間索引和流。Valkey 內置復制、Lua 腳本、LRU 驅逐、事務和不同級別的磁盤持久化功能,并通過Valkey Sentinel提供高可用性,并通過Valkey Cluster實現自動分區。

為了實現最佳性能,Valkey 使用內存數據集。Valkey 可以通過定期將數據集轉儲到磁盤或將每個命令附加到基于磁盤的日志來持久化數據。如果您只需要功能豐富的聯網內存緩存,也可以禁用持久化功能。Valkey 支持異步復制,具有快速無阻塞同步和網絡分裂時自動重新連接以及部分重新同步的功能。可以在大多數編程語言中使用 Valkey。

該項目是在過渡到新的可用源許可證之前從開源 Redis 項目fork而來的,源于Redis 7.2.4 分支,由Redis原核心開發者組建,專注于兼容性優化和云原生適配?。采用 ?BSD-3? 協議,允許自由使用、修改和分發,并由Linux基金會管理,社區貢獻者包括 AWS、阿里云、谷歌等頭部企業,治理模式開放透明?。

Valkey是Redis 許可證協議問題或閉源后的直接替代品,由Redis 的原社區開發者開發和維護,完全兼容 開源版本Redis 協議與架構設計,使用方式與Redis類似,用戶可以像使用Redis一樣使用Valkey?。自項目啟動以來,Valkey已經在業界被廣泛使用,并且得到了亞馬遜云科技的積極支持?。

2.1 哨兵架構設計

Valkey Sentinel 的主要功能包括:
1.? 監控 Valkey 實例狀態?:Valkey Sentinel 負責監控 Valkey 主從節點的狀態,通過定期檢查確保節點的可用性,檢測節點的心跳、配置變化等情況。

2.? 自動故障檢測與通知?:當 Valkey Sentinel 發現某個節點不可用時,會立即通知其他 Sentinel 和客戶端,觸發故障轉移流程。

3.? 自動故障轉移?:在主節點不可用時,Valkey Sentinel 負責選擇一個合適的
從節點升級為主節點,并通知其他節點和客戶端更新配置,實現自動的故障轉移。

4.? 配置提供?:Valkey Sentinel 為客戶端提供關于當前 Valkey 集群的信息,包括主從關系、故障節點等,客戶端可以通過 Sentinel 獲取集群配置以便進行連接。

5.? 通知機制?:Valkey Sentinel 通過發布訂閱模式實現對節點狀態變化的通知,使其他節點和客戶端能夠及時了解集群的變化。

在這里插入圖片描述

2.2 集群架構設計

Valkey Cluster 架構設計是圍繞高性能、高可用性和可擴展性構建的,其核心思想源于 Redis Cluster,但在實現細節和優化方向上進行了創新,以適應現代分布式系統的需求。

以下是 Valkey Cluster 架構設計的關鍵點和分析:

  1. 分布式架構與數據分片?
  • 數據分片(Sharding)?:
    Valkey Cluster 將數據分散到多個節點上,每個節點負責一部分數據(稱為“槽位”或“slot”)。默認情況下,數據被分為 16384 個槽位,每個槽位可以映射到集群中的任意節點。這種設計使得數據可以水平擴展,支持大規模數據存儲。
  • 節點角色?:
    集群中的節點分為兩類:
    • 主節點(Master)?:負責處理讀寫請求,并維護槽位的數據。
    • 從節點(Replica)?:作為主節點的副本,提供高可用性和讀擴展能力。當主節點故障時,從節點可以自動提升為主節點。
  • 一致性哈希?:
    Valkey Cluster 使用一致性哈希算法來分配槽位,確保數據均勻分布,并在節點增減時最小化數據遷移。
  1. 高可用性與故障轉移?
  • 故障檢測與自動恢復?:
    Valkey Cluster 通過節點間的 Gossip 協議定期交換狀態信息,檢測節點是否存活。如果主節點故障,集群會自動將從節點提升為主節點,并重新分配槽位。
  • 多副本與數據持久化?:
    每個槽位的數據在集群中可以有多個副本(主從復制),確保數據的高可用性。同時,Valkey 支持 RDB 和 AOF 兩種持久化方式,防止數據丟失。
  • 手動故障轉移?:
    除了自動故障轉移,Valkey 還支持手動故障轉移(如 CLUSTER FAILOVER 命令),允許管理員在維護時主動切換主節點。
  1. 集群通信與協議?
  • Gossip 協議?:
    Valkey Cluster 使用 Gossip 協議進行節點間的通信,傳播集群狀態信息(如節點上線、下線、槽位分配等)。這種協議具有去中心化、容錯性強的特點。
  • MOVED 重定向?:
    當客戶端請求的槽位不在當前節點時,節點會返回 MOVED 錯誤,并告知客戶端正確的節點地址。客戶端需要重新路由請求到正確的節點。
  • ASK 重定向?:
    在槽位遷移過程中,如果客戶端請求的槽位正在遷移中,節點會返回 ASK 錯誤,并告知客戶端臨時目標節點。客戶端需要先發送 ASKING 命令,再發送實際請求。
  1. 可擴展性與性能優化?
  • 水平擴展?:
    Valkey Cluster 支持動態添加或刪除節點,集群會自動重新分配槽位,實現無縫擴展。
  • 讀寫分離?:
    客戶端可以配置只從從節點讀取數據(READONLY 命令),減輕主節點的壓力,提高讀性能。
  • Pipeline 與異步操作?:
    Valkey 支持 Pipeline 操作,允許客戶端批量發送命令,減少網絡往返時間。此外,異步操作(如異步復制)可以進一步提高性能。
  • 內存優化?:
    Valkey 在內存管理上進行了優化,支持多種數據結構(如字符串、哈希、列表、集合、有序集合等),并提供了內存淘汰策略(如 LRU、LFU)來管理內存。
  1. 監控與管理?
  • 集群狀態監控?:
    Valkey 提供了 CLUSTER INFO、CLUSTER NODES 等命令,允許管理員查看集群狀態、節點信息、槽位分配等。
  • 配置管理?:
    管理員可以通過 CLUSTER MEET、CLUSTER ADDSLOTS 等命令動態管理集群配置。
  • 慢查詢日志?:
    Valkey 支持慢查詢日志,幫助管理員識別性能瓶頸。
  1. 與 Redis Cluster 的區別?
  • 性能優化?:
    Valkey 在 Redis Cluster 的基礎上進行了性能優化,例如改進了網絡通信協議、減少了重定向開銷等。
  • 功能增強?:
    Valkey 可能增加了一些新功能(如更靈活的槽位分配策略、更高效的故障轉移機制等),具體取決于其版本和實現。
  • 生態兼容性?:
    Valkey 通常保持與 Redis Cluster 的兼容性,使得現有的 Redis 客戶端和工具可以無縫遷移到 Valkey。
    在這里插入圖片描述

2.3 valkey 使用企業和業內生態?

2.3.1 Valkey 的企業應用現狀?
1.? 云服務廠商的采用?

  • AWS?:將Valkey集成至ElastiCache服務,推出Valkey 7.2版本,提供20%-33%的成本節約,并推出Valkey Glide客戶端,支持多語言(Java、Python等)及智能拓撲感知,適配微服務、實時消息等場景。
  • 阿里云?:作為Valkey社區核心維護者,將內部Redis優化成果(如集群無感擴縮容、主從無感HA)貢獻至Valkey,并計劃引入TairHash、TairString等增強型數據結構。
  • 華為云?:通過參與Valkey社區建設,推動Sentinel組件優化及邏輯多租引擎方案,幫助企業降低Redis使用門檻。
    2.? 操作系統與發行版的集成?
  • Arch Linux?:2025年4月宣布將Valkey作為默認內存型數據庫,取代Redis,成為首個在核心發行版中完成遷移的主流系統。
  • 其他Linux發行版?:Valkey的BSD-3協議兼容性及Redis命令兼容性,使其成為Red Hat、Ubuntu等發行版考慮替換Redis的候選方案。
    3.? 企業級應用場景?
  • 緩存與會話存儲?:Valkey的毫秒級延遲和高吞吐量,使其成為電商、社交平臺等場景的首選。
  • 實時消息隊列?:通過Pub/Sub模式及RDMA技術,Valkey在金融交易、IoT數據流等場景中替代Kafka或RabbitMQ。
  • 分布式鎖與任務調度?:利用SETNX、Lua腳本等特性,Valkey在微服務架構中實現跨節點資源協調。
    2.3.2 Valkey 的業內生態?
    1.? 開源社區與基金會支持?
  • Linux基金會托管?:Valkey由社區驅動,避免Redis因商業利益導致的許可證變更風險,吸引Redis核心貢獻者加入。
  • 活躍的開發者生態?:GitHub上Valkey已獲超2萬Star,社區貢獻者涵蓋AWS、阿里云、谷歌等企業,形成技術迭代閉環。
    2.? 技術擴展與插件生態?
  • Valkey Over RDMA?:通過RDMA技術優化網絡通信,降低集群節點間延遲,適用于高頻交易、AI模型推理等場景。
  • 可擴展插件系統?:支持自定義數據結構(如RedisJSON的替代方案)及訪問模式,滿足特定行業需求。
    3.? 商業解決方案與合作伙伴?
  • 云原生托管服務?:AWS ElastiCache for Valkey、阿里云Tair(基于Valkey)等,提供自動化運維、監控告警等企業級功能。
  • 硬件協同優化?:與AWS Graviton4等ARM架構芯片深度適配,通過IO多線程技術提升性能,降低TCO。
    4.? 行業聯盟與標準制定?
  • 跨云兼容性?:Valkey Glide客戶端通過“大多數規則算法”實現集群拓撲動態感知,確保混合云環境下的高可用性。
  • 安全與合規?:支持RDB+復制backlog雙通道持久化,滿足金融、醫療等行業的強一致性需求。

3 評估指標

在這里插入圖片描述

4 評估結果

Valkey作為Redis社區分叉后的開源項目,憑借其開源協議優勢和持續技術創新,已在AWS、阿里云、華為云等頭部云廠商及Arch Linux等主流發行版中快速落地,形成了覆蓋云原生、數據庫、分布式系統等領域的生態格局,展現出成為新一代高性能鍵值存儲標準的潛力。可以作為Redis存在協議風險或閉源之后的替代品

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

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

相關文章

華為云Flexus+DeepSeek征文 | 基于華為云ModelArts Studio安裝NoteGen AI筆記應用程序

華為云FlexusDeepSeek征文 | 基于華為云ModelArts Studio安裝NoteGen AI筆記應用程序 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、NoteGen介紹NoteGen簡介主要特點 三、安裝NoteGen工具下載NoteGen軟件安裝NoteGen工具 四、開通…

BUUCTF在線評測-練習場-WebCTF習題[BJDCTF2020]Easy MD51-flag獲取、解析

解題思路 打開靶場,有個提交框,輸入后url會出現我們提交的參數password http://a48577ed-9a1c-4751-aba0-ae99f1eb8143.node5.buuoj.cn:81/leveldo4.php?password123 查看源碼并沒用發現什么貓膩,抓包在響應頭發現了貓膩 hint: select * …

面向對象三大特性深度解析:封裝、繼承與多態

面向對象三大特性深度解析:封裝、繼承與多態 思維導圖概覽 #mermaid-svg-v2u0XIzKotjyXYei {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v2u0XIzKotjyXYei .error-icon{fill:#552222;}#mermaid-svg-v2…

mmap映射物理內存之三invalid cache

目錄 流程設計 invalid 命令 內核態invalid 內核態invalid,用戶態mmap物理地址 PAN機制 PAN機制歷程 硬件支持 ARMv8.1-PAN 特性 Linux 內核的適配 軟件模擬 PAN(SW PAN) 背景 Linux 的實現 總結 前述刷新cache的流程也同樣可…

記憶化搜索(dfs+memo)無環有向圖

這是一道可以當作板子的極簡記憶化搜索 建立a 是鄰接表,其中 a[x] 存儲從節點 x 出發能到達的所有節點。 b[x] 記錄從節點 x 出發的所有邊的權重之和。根據數學原理,我們很容易發現,一個根(起點)的期望,等…

使用AI豆包寫一個車輛信息管理頁面

記錄一個基本的車輛信息管理頁面,由豆包撰寫完成,只需要微調頁面即可。 主要功能是車輛信息的查詢、新增、編輯,項目用到了uniapp、vue3、ts、uni-ui、z-paging 頁面效果如下: 以上界面均由豆包生成,完成度非常高&am…

《HarmonyOSNext應用防崩指南:30秒定位JS Crash的破案手冊》

《HarmonyOSNext應用防崩指南:30秒定位JS Crash的破案手冊》 ##Harmony OS Next ##Ark Ts ##教育 本文適用于教育科普行業進行學習,有錯誤之處請指出我會修改。 💥 哇哦!JS Crash崩潰日志完全解析手冊 當你的應用突然閃退時&am…

閱讀筆記(3) 單層網絡:回歸(下)

閱讀筆記(3) 單層網絡:回歸(下) 該筆記是DataWhale組隊學習計劃(共度AI新圣經:深度學習基礎與概念)的Task03 以下內容為個人理解,可能存在不準確或疏漏之處,請以教材為主。 1. 為什么書上要提到決策理論? …

Mac OS系統每次開機啟動后,提示:輸入密碼來解鎖磁盤“Data”,去除提示的解決方法

問題描述: Mac mini外接了一個磁盤(EX_Mac)為默認使用的系統盤,內置的硬盤(Macintosh HD)為Mac mini自帶的系統盤 外置硬盤系統每次開機都會掛載內置磁盤,同時會提示需要輸入密碼來解鎖磁盤“…

CSS Flex 布局中flex-shrink: 0使用

flex-shrink: 0 是 CSS Flexbox 布局中的一個關鍵屬性,用于禁止彈性項目(flex item)在容器空間不足時被壓縮。以下是詳細解釋和示例: 核心作用 當容器的可用空間小于所有彈性項目的總寬度(或高度)時&#…

WHERE 子句中使用子查詢:深度解析與最佳實踐

🔍 WHERE 子句中使用子查詢:深度解析與最佳實踐 在 WHERE 子句中使用子查詢是 SQL 的高階技巧,可實現動態條件過濾。以下是全面指南,涵蓋語法、類型、陷阱及優化策略: 📜 一、基礎語法結構 SELECT 列 FR…

從0到1:不文明現象隨手拍小程序開發日記(一)

前期調研 不文明現象隨手拍小程序:在城市的快速發展進程中,不文明現象時有發生,為了有效解決這一問題,提升城市文明程度, 市民若發現不文明行為,如亂扔垃圾、隨地吐痰、破壞公共設施、違規停車等&#xff…

STM32F103之SPI軟件讀寫W25Q64

一、W25Q64簡介 1.1 簡介 W25Q64(Nor flash)、 24位地址,64Mbit/8MByte、是一種低成本、小型化、使用簡單的非易失性存儲器,常用于數據存儲、字庫存儲、固件程序存儲等場景 時鐘頻率:最大80MHz(STM32F103系統時鐘為72MHz…

vue3+element-plus 組件功能實現 上傳功能

一、整體功能概述 這段代碼實現了一個基于 Vue 3 和 Element Plus 組件庫的文件導入及預覽功能模塊。主要包含了一個主導入對話框(用于上傳文件、展示文件相關信息、進行導入操作等)以及一個用于預覽文件內容的預覽對話框。支持導入特定格式(…

OpenCV中創建Mat對象

第1章 創建Mat對象 1.1. 創建空的 Mat 對象 cv::Mat mat; 1.2. 創建灰度圖像 // 創建一個 3 行 4 列、8位無符號單通道矩陣(相當于灰度圖) cv::Mat mat(3, 4, CV_8UC1); 1.3. 創建彩色圖像 // 創建三通道矩陣(相當于彩色圖像&#xff0…

10、做中學 | 五年級下期 Golang循環控制

一、一個小需求 我想要打印10遍hello world,你想怎么編寫呢? // 需求:打印10遍"hello world"fmt.Println("hello world")fmt.Println("hello world")fmt.Println("hello world")fmt.Println("hello world…

機器學習算法-K近鄰算法-KNN

1. K近鄰算法是什么? 定義: K近鄰是一種基于實例的懶惰學習(Lazy Learning)算法,用于分類和回歸任務。 核心思想:“物以類聚”——通過計算樣本間的距離,找到目標點的最近K個鄰居,…

基于vue框架的法律知識咨詢普及系統gwuv7(程序+源碼+數據庫+調試部署+開發環境)帶論文文檔1萬字以上,文末可獲取,系統界面在最后面。

系統程序文件列表 項目功能:用戶,知識類型,律師,律師推薦,法律知識,新聞類型,法律新聞,咨詢律師 開題報告內容 基于Vue框架的法律知識咨詢普及系統開題報告 一、研究背景與意義 隨著法治社會建設的深入推進,公眾對法律知識的需求呈現爆發式增長。然而…

Netty 揭秘CompositeByteBuf:零拷貝優化核心技術

CompositeByteBuf 類 核心設計目標?? ??虛擬緩沖區??:將多個 ByteBuf 合并為單一邏輯視圖,減少數據復制。??零拷貝優化??:通過組合而非復制提升性能。??引用計數管理??:統一管理底層 ByteBuf 的生命周期。 核心成…

用css實現文字字體顏色漸變

用css實現文字字體顏色漸變 background-clip 是CSS3中新增的屬性,可以用于指定背景圖片或顏色的繪制范圍。利用 background-clip 屬性實現文字顏色從左到右、從綠到白的漸變效果: 代碼如下: .gradient-color {background-image: linear-gr…