天天看點

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

Redis 6.0.1 于 2020 年 5 月 2 日正式釋出了,如 Redis 作者 antirez 所說,這是迄今為止最“企業”化的版本,也是有史以來改動最大的一個 Redis 版本,同時也是參與開發人數最多的一個版本。

是以在使用此版本之前,建議各位開發者先進行深入的測試再考慮投産,畢竟生産壞境無小事。好了,回到本文的重點,接下來我們來重點看下 Redis 6.0.1 給我們帶來了那些新功能。

Redis 新功能介紹

Redis 6 的更新日志,主要包含以下五部分的内容:

1.Redis 6.0-RC1 版新功能介紹;

2.Redis 6.0-RC2 版新功能介紹;

3.Redis 6.0-RC3 版新功能介紹;

4.Redis 6.0-RC4 版新功能介紹;

5.Redis 6.0.0 GA 版新功能介紹。

除了以上這些版本的更新日志外,還有 6.0.1 正式版的更新日志,不過這個正式版的釋出時間隻比 Redis 6.0.0 GA 晚了兩天,是以隻修複了一些 bug,是以我們隻需要看以上五個日志即可。

1.Redis 6.0-rc1 更新日志

官方更新日志如下:

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

此版本新增的内容最大,如下清單所示:

  • 衆多新子產品(modules)API
  • 更好的過期循環(expire cycle)
  • SSL
  • ACLs 權限控制
  • RESP3 協定
  • 用戶端緩存(Client side caching)
  • 多線程 IO(Threaded I/O)
  • 無盤複制副本(Diskless replication on replicas)
  • Redis-benchmark 的叢集支援和 redis-cli 優化
  • 重寫 Systemd 支援(Systemd support rewrite)
  • Redis 叢集代理與 Redis 6 一同釋出(但在不同的 repo)
  • Disque 子產品與 Redis 6 一同釋出

2.Redis 6.0-rc2 更新日志

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

Redis 6 RC2 帶來了許多修複和新功能,尤其是用戶端的緩存功能,此版本的重大更改如下清單。

  • ACL LOG:記錄拒絕的指令,密鑰通路和身份驗證。
  • 重新設計了用戶端緩存。現在,我們使用密鑰而不是緩存插槽。
  • 用戶端緩存:已實作廣播模式。
  • 用戶端緩存:已實作 OPTIN/OPTOUT 模式。
  • 删除用于在非持久性執行個體中進行複制的 RDB 檔案(可選)。
  • 修複程式(僅標明的修複程式,請參閱所有修複程式的送出):
  • 在邊緣情況下對流的不同修複。
  • 修正由于 RESP3 更改而導緻重複的 CLIENT SETNAME 答複。
  • 修正因新的有效到期除以零而導緻的崩潰。
  • 避免将哨兵更改提升為自己的副本。
  • 修複了 KEYS 指令中以 * 開頭,後跟 x00 的錯誤。
  • 線程 I/O:現在也使用主線程來執行 I/O。
  • 對子產品API進行了許多修複,而在下一個RC中還會有更多修複。
  • 如果字元串中間包含 0,則 ld2string 應該失敗。
  • 使 Redis 測試更可靠。

3.Redis 6.0-rc3 更新日志

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?
  • 這個版本主要是修複了一些 bug,如下清單所示:
  • 修複了由于重構 SSL 而導緻的連接配接代碼崩潰。
  • 用于阻止指令的精确逾時。現在逾時已達到 HZ 分辨率,無論連接配接的 clinet 數量如何。新逾時存儲在基數樹中并按到期時間排序。
  • 修複了由于 CONFIG maxclients 而調整事件循環大小時發生的罕見崩潰。
  • 修正部分重新同步成功後的 systemd 準備情況。
  • Redis-cli 詢問密碼模式将在啟動時提示(以提高安全性)。
  • 鍵空間通知已添加到 MIGRATE/RESTORE。
  • 修複了線程 I/O 錯誤。
  • 在 Sentinel 中實作新的 ACL 樣式 AUTH。
  • 使 'requirepass' 與 Redis<=5 更向後相容。
  • ACL:如果預設使用者關閉,則将其視為禁用狀态,而不管其是否為“ nopass”。
  • 修複了在 Redis 群集中更新執行個體時可能出現的不一緻問題
  • READONLY 錯誤後中止事務。
  • 對子產品 API 的許多不同修複。
  • 添加了 BITFIELD_RO 以在隻讀副本上調用該指令。
  • PSYNC2:有意義的偏移量實作。允許斷開連接配接的主機仍在向副本發送 PING,以便能夠成功 PSYNC 以增量方式傳遞給新的從站,進而丢棄了僅由 PING 組成的複制積壓。
  • 修正 Lua 腳本處于繁忙狀态時流水線的 MULTI/EXEC。
  • 重新修複子產品中的傳播 API,在其他更改後再次中斷。

4.Redis 6.0-rc4 更新日志

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

此版本主要新增的内容如下:

  • 提高了大量用戶端連接配接時使用 INFO 指令的查詢速度。
  • 在所有阻止指令上都大大加快了速度:現在可以阻止在同一鍵上是 O(1)而不是 O(N)。
  • 陳舊的副本現在允許 MULTI/EXEC。
  • 新指令:LCS(最長公共子序列)。
  • 添加新配置以使 DEL 像 UNLINK。
  • RDB 加載加速。
  • 修複了許多錯誤。

5.Redis 6.0.0 GA 更新日志

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

此日志更新的主要内容如下:

  • XCLAIM AOF/replicas 傳播已修複。
  • 用戶端緩存:新的 NOLOOP 選項以避免收到有關自己執行的更改。
  • ACL GENPASS 現在使用 HMAC-SHA256,并具有一個可選的“位”參數。這意味着您可以将其用作通用的“安全随機字元串”原始!
  • 群集“SLOTS”子指令的記憶體優化。
  • LCS 指令現在是 STRALGO 的子指令。
  • 副本的有意義的偏移量。更成功的部分重新同步。
  • 優化延遲回複的記憶體使用。
  • 更快的 CRC64 法可更快地加載 RDB。
  • XINFO STREAM FULL,一個新的子指令,用于擷取整個流狀态。
  • CLIENT KILL USER <使用者名>。
  • MIGRATE AUTH2 選項,用于 ACL 樣式身份驗證支援。
  • 修正了一些其他錯誤。

綜合以上所有版本的更新日志我們發現,這次 Redis 6.0 帶來的主要功能是:

  • 提供了衆多的新子產品(modules)API
  • 提供了用戶端緩存功能
  • 多線程 I/O 能力
  • 提升了 RDB 日志的加載速度
  • 修改了若幹 bug 和一些優化

其中多線程 I/O 能力是我們最關注的功能了,有人用它和單線程的版本做個一個性能對比,如下圖所示:

Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?
Redis 6.0 正式版終于釋出了!除了多線程還有什麼新功能?

(注:圖檔來源于 iTushou.com)

從以上結果可以看到 GET/SET 指令在多線程版本中的性能相比單線程已經翻倍了。

總體來說,此次 Redis 6.0 帶給我們的功能還是很大并且很實用的,隻是版本改動太大,我們需要等待時間的驗證和大量的測試之後才建議上線至生産環境。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/live

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-05-03

本文作者:Java中文社群

本文來自:“

掘金

”,了解相關資訊可以關注“掘金”