王奇 顧問軟體工程師
目前從事 PaaS 中間件服務(Redis / MongoDB / ELK 等)開發作業,對 NoSQL 資料庫有深入的研究以及豐富的二次開發經驗,熱衷對 NoSQL 資料庫領域內的最新技術動態的學習,能夠把握行業技術發展趨勢,
隨著 Web 2.0 的不斷發展,業務需求也不斷變化,Redis 是一款誕生于 2009 年的高性能記憶體鍵值資料庫,在近十年的互聯網架構中承擔了不可替代的作用,實作了很多復雜的業務需求,深受技術愛好者的喜愛,近些年 Web 3.0 概念的提出也為 Redis 提出了更高的挑戰,
背景
最近客戶提出一個問題:
Redis 能否在不增加資源的場景下明顯提高QPS?
這是個看似不合理的問題,用戶的需求是 QPS 提高,但不增加資源投入,一般提高 QPS 的思路大多是橫向擴展,集群節點數越多 QPS 就越高,但成本也就越高,如果想要達成這個訴求,那 KeyDB[1] 也許是一個不錯的選擇,
KeyDB 簡介

圖片來源:https://keydb.dev/
KeyDB 是 Redis 的分支,專注于多執行緒、記憶體效率和高吞吐量,除了多執行緒之外,KeyDB 還具有僅在 Redis Enterprise 中才能使用的功能,例如:Active Replication、FLASH 存盤,直接備份到 S3,且對 Redis 完全兼容,
倉庫地址:https://github.com/EQ-Alpha/KeyDB
設計差異
Redis 是采用單執行緒設計的典范,在效率和性能之間有獨特的設計邏輯,
KeyDB 將 Redis 主執行緒拆分為主執行緒和 Worker 執行緒,其中,每個 Worker 執行緒都是一條 I/O 執行緒,負責監聽埠和 Accept 請求,優化讀取資料和決議協議,可大幅度提升 I/O 性能,

功能優勢
1、跨域多主
KeyDB 支持多個異步復制架構的主節點彼此同步,支持復制架構中所有節點都是主節點,不需要哨兵監控節點,在 Redis 原有的高可用架構之外,又增加了新的架構思路,
2、垂直和水平縮放
KeyDB 是多執行緒設計,可以支持垂直/水平擴展,最大化資源利用率,對于那些 Redis 實體達到設備上線的情況,這是一個很好的替代選擇,使用標準 KeyDB 節點最多可有效使用 10 個內核,啟用 TLS 時可有效使用 16 個內核!
3、更方便的生存時間設定
KeyDB 提供了 Subkey EXPIRE,可以精確設定集合中成員的過期時間,EXPIREs 現在還具有近乎實時的主動洗掉功能,
4、TLS 加密
KeyDB 提供 TLS 支持,其吞吐量是 Redis + TLS 的 7 倍!
雖然 TLS 加密增加了額外的 CPU 開銷,但 KeyDB 的多執行緒架構支持更多的作業執行緒來防止性能下降,
5、ModJS
可以使用 KeyDB 開源的 Javascript 模塊創建自定義命令,建立在強大的 V8 JIT 引擎之上,ModJS 比 LUA 更快,并支持許多 node.js 模塊,為常見任務提供廣泛的庫支持,
6、ARM 支持
KeyDB 支持 ARM,
性能優勢

圖片來源:KeyDB 官網
總結
也許您對官方的性能資料存疑,下一期我們將對 KeyDB 和 Redis 進行更全面的性能測驗,希望給客戶的提問一個更全面的回答,敬請期待,
參考參考
[1]:KeyDB:https://keydb.dev/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/423482.html
標籤:其他
