Redis 7.0 首個 RC 版本釋出

2022-02-11 09:00:45

Redis 7.0 首個 RC 版已釋出了一段時間。新版本包含多個面向使用者的新功能、顯著的效能優化和許多其他改進。與此同時還引入了可能會破壞相容性的變更,因此使用者在升級時需要確認是否受影響。

需要特別注意以下變更:

  1. Redis 7 將 AOF 作為多個檔案儲存在一個資料夾中
  2. Redis 7 為 RDB 檔案應用了新版本 (version 10) 格式,與舊版本不相容
  3. Redis 7 在載入較舊的 RDB 格式時會動態地將 ziplist 編碼的 key 轉換為 listpacks。此過程通常發生在從 RDB 載入檔案或者主從複製之間,且會增載入入時間

新特性

  • Redis Functions:使用伺服器指令碼擴充套件 Redis 的新方法 ()
    see 
  • ACL:細粒度的基於 key 的許可權控制,通過 selectors 支援多種許可權規則 ()
    see  and 
  • Cluster:支援用於分片(特定節點)的釋出/訂閱功能 ()
    see 
  • 在大多數情況下對子命令提供一流處理,這可能會對 ACL 類別、INFO 命令統計等造成影響 (, )
  • 命令後設資料和檔案更新 ()
    檢視 , 
  • Command key-specs:為 client 定位 key 引數和 read/write purpose 提供更好的方法
     (, , )
    see 
  • 使用 Multi-Part AOF 機制避免 AOF 的重寫開銷 ()
  • Cluster:支援主機名,不再是此前的僅支援 IP 地址 ()
  • 優化網路緩衝區的記憶體開銷管理,以及增加當總記憶體超過限制時刪除使用者端的選項 ()
  • Cluster:增加斷開叢集匯流排連線的機制,以防止緩衝區不受控制的增長 ()
  • AOF:增加時間戳註解和對基於時間點恢復的支援 ()
  • Lua:支援 EVAL 指令碼中的 Function flags ()
    see 
  • Lua:RESP3 協定響應 Verbatim 和 Big-Number 型別 ()
  • Lua:可通過 redis.REDIS_VERSION, redis.REDIS_VERSION_NUM 命令獲取 Redis 版本 ()

效能和資源利用改進

  • 叢集模式下顯著優化延遲並降低記憶體開銷 ()
  • 在具有很多 zset 或 hash key 的場景時降低記憶體開銷 ()
  • 複製積壓緩衝區和主從複製緩衝區使用一個全域性共用的緩衝區 ()
  • 減少 copy-on-write 的記憶體開銷 ()
  • 釋放叢集傳送緩衝區中未使用的容量 ()
  • 優化記憶體效率,充分利用使用者端結構記憶體用於回覆緩衝區 ()

  • 在 Hash, List, Zset 中將 ziplist 替換為 listpack (, , )
  • 新增對 list 型別的支援以儲存大於 4GB 的元素 ()
  • 為臨時使用者端物件新增了一個池,以便在模組操作中重複使用 ()
  • 移除命令引數計數限制,動態增長 argv 緩衝區 ()
  • 優化 list 操作,從更靠近元素的一側開始查詢 ()
  • 改進 fsync 以避免大量寫入磁碟 ()
  • BITSET 和 BITFIELD SET 僅在值實際更改時傳播 ()
  • 降低使用者端被模組解鎖阻塞時的延時 ()

展開閱讀全文