真正的平行處理
每個工作執行緒都同時執行自己所負責連線的指令。沒有會被塞滿的單一指令執行緒,因此吞吐量隨核心數成長。
細粒度並行
鍵空間經過劃分,讓對不同鍵的指令得以同時執行,而且很少需要互相等待。
可預期的延遲
原生 C++ 引擎,沒有垃圾回收器,也沒有 stop-the-world 暫停。快照由背景執行緒寫入,而不是 fork 出子行程,因此儲存時不會讓記憶體用量加倍。
一個指令的一生
每個請求都在接收它的核心上,經過相同的四個階段。
解析
讀取請求,包括只收到一部分的讀取。HotKV 支援 RESP2、RESP3 與 inline 指令,並可透過 HELLO 切換協定。
分派
在執行開始之前,先找到指令,並檢查它的參數個數、旗標與鍵的位置。
執行
針對指令的鍵執行指令。過期的鍵會在被存取時移除,也會由背景清掃移除。
回應
以用戶端協商出的協定版本送出回覆。
不只是快取
同一個平行引擎提供 300 個核心指令、八種淘汰策略與下列子系統,授權方案另有超過 170 個 AI 與企業指令。不需要額外掛載模組。
快照 + AOF
以原子方式寫入的二進位快照,加上可設定 fsync 策略(always、everysec、no)的僅追加檔案,以及 BGREWRITEAOF 壓縮。
Lua 5.4,沙箱隔離
EVAL 與 EVALSHA 透過 hotkv.call() 在沙箱隔離的 Lua 5.4 執行環境中以原子方式執行腳本,並保留 redis.call() 作為相容別名。具名函式庫透過 FUNCTION 與 FCALL 提供。
HNSW 索引
VSIM 指令在 HNSW 索引上提供近似最近鄰搜尋,支援餘弦、L2 與內積距離,也包含依標籤篩選的查詢。
草圖與速率限制
HyperLogLog、Bloom filter、Count-Min Sketch 與 Top-K 高頻項目追蹤,以及伺服器端、可控制突發量的 GCRA 速率限制。用戶端不需要做任何運算。
原生支援 Prometheus
內建的 HTTP 指標端點(在您設定 metrics-port 之前不會啟用)會提供每個指令的呼叫次數與延遲。LATENCY HISTOGRAM 與 INFO latencystats 會回報 p50、p99 與 p99.9,HOTKEYS 則列出存取最頻繁的鍵。
ACL + TLS
依使用者設定的存取控制,可限定指令、鍵與頻道的範圍,並以雜湊儲存密碼。TLS 在行程內終止,適用於用戶端連線,也適用於叢集與複寫連結。On-Premise 另外提供角色,以及 LDAP 與 OpenID Connect 單一登入。