由 Linux 基金會維護的 Redis 分支 —— 開源內存數據庫 Valkey 9.0.0 已正式 GA。新版本帶來多項重要性能與功能升級。此次更新的重點在於更高效的集羣遷移機制、更靈活的哈希字段管理,以及對大規模分佈式部署的全面優化。
原子槽遷移(Atomic Slot Migrations)
-
在舊版本中,集羣中數據從一個節點遷移到另一個節點是“逐 key”遷移:先 move 再 delete。會導致遷移過程中客户端訪問不確定在哪個節點、重定向或重試、性能下降。
-
在 9.0 版中,Valkey 引入“槽級別”的遷移機制:每個節點負責多個“槽”(slot),現在遷移直接將整個槽(slot)從一個節點原子地遷移到另一個節點。這樣可以避免舊機制那種“key 在兩個節點間”的不確定狀態。
-
對於大集合(例如 sorted sets、lists)遷移時也更友好:舊方式大 key 可能因為目標節點輸入緩衝區滿導致遷移阻塞。新機制使用 AOF 格式逐項遷移集合成員,而不是整體 key,減緩了延遲峯值。
支持哈希字段級別的過期(Hash Field Expiration)
-
在 9.0 之前,哈希類型(hash)中的所有字段共同綁定在一個 key 下,過期機制只能對整個 key 執行,無法對某個字段單獨設置過期。導致如果只想讓其中某幾個字段過期,只能拆分多個 key、複雜化且增加內存佔用。
-
9.0 版新增一系列命令支持 “字段級別的過期”:如
HEXPIRE、HEXPIREAT、HGETEX、HPERSIST、HPTTL、HPEXPIRE等。
集羣模式下支持編號數據庫(Numbered Databases in cluster mode)
-
傳統上,Redis 及其分支中“編號數據庫”(如 db0、db1 等)在集羣模式下一般僅支持 db0。一旦啓用多個編號數據庫,就限制了分片擴展。
-
Valkey 9.0 打破這個限制:在集羣模式下支持多個編號數據庫,這讓用户可以在同一個集羣內按“庫”分隔數據、避免 key 衝突、提高靈活性。
下載地址:https://github.com/valkey-io/valkey/releases/tag/9.0.0