前言
前不久Redis宣布從 Redis 7.4 開始,將原先比較寬松的 BSD 源碼使用協定修改為 RSALv2 和 SSPLv1 協定,該協定變化意味著Redis不再開源。今天給大家分享一款完全開源(MIT協定)、免費的Redis替代性計畫產品:Garnet。
Redis開源協定詳情:https://github.com/redis/redis?tab=License-1-ov-file#readme
Garnet開源協定詳情:https://github.com/microsoft/garnet?tab=MIT-1-ov-file
Garnet計畫介紹
Garnet是一款由微軟研究院基於.NET開源的高效能、跨平台的分布式緩存儲存資料庫,該計畫提供強大的效能(吞吐量和延遲)、可延伸性、儲存、恢復、集群分片、金鑰遷移和復制功能。並且無需做任何修改可以與現有的 Redis 客戶端配合使用。
Garnet獨特優勢
協定相容性:
Garnet 采用流行的 RESP 路線協定作為起點,這使得可以從當今大多數程式語言(
例如C#中的 StackExchange.Redis
)中可用的未經修改的 Redis 客戶端使用 Garnet。
效能優勢: 相比同類開源緩存儲存,Garnet在處理多客戶端連線和小批次請求時表現更優,提供更好的吞吐量和可延伸性,從而節省成本。
低延遲: 在Azure VM上展示了極低的客戶端延遲,通常低於300微秒,對於實際場景至關重要。
技術特點: 基於最新的.NET技術,具有跨平台、可延伸和現代化的特點,易於開發和維護,並在Linux和Windows上實作了最先進的效能。
Garnet計畫原始碼
Garnet效能優勢
Garnet效能測試詳情對比文章閱讀:https://microsoft.github.io/garnet/docs/benchmarking/results-resp-bench
我們預配兩個執行 Linux (Ubuntu 20.04) 的 Azure 標準 F72s v2 虛擬機器(每個虛擬機器 72 個 vcpu,144 GiB 記憶體),並啟用加速 TCP。這個SKU的好處是我們保證不會與另一個VM共置,這將最佳化效能。一台機器執行不同的緩存儲存伺服器,另一台機器專門用於釋出工作負載。我們使用名為 Resp.benchmark 的基準測試工具來生成所有結果。在撰寫本文時,我們將 Garnet 與最新開源版本的 Redis (v7.2)、KeyDB (v6.3.4) 和 Dragonfly (v6.2.11) 進行了比較。
吞吐量獲取
資料庫大小為 (a) 1024 個鍵和 (b) 2.56 億個鍵時的吞吐量(對數尺度)、不同數量的客戶端會話:
資料庫大小為 (a) 1024 個鍵和 (b) 2.56 億個鍵時的吞吐量(對數規模)、不同的批次大小:
延遲獲取/設定
延遲、不同客戶端會話數量(a)中值、(b)第 99 個百分位和(c)第 99.9 個百分位:
不同批次大小下的延遲(a)中值、(b)第 99 個百分位數和(c)第 99.9 個百分位數:
計畫源碼地址
更多計畫實用功能和特性歡迎前往計畫開源地址檢視👀,別忘了給計畫一個Star支持💖。
GitHub開源地址:https://github.com/microsoft/garnet
線上使用文件:https://microsoft.github.io/garnet/docs