雲栖号資訊:【 點選檢視更多行業資訊】
在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicWZwpmLxYjMyIDZjVTN1ADOzcjYhlTYwcTYmBjYmVGZmVWN3ADO2gjM2kDZi9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.jpeg)
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 更新日志
官方更新日志如下:
此版本新增的内容最大,如下清單所示:
- 衆多新子產品(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 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 更新日志
- 這個版本主要是修複了一些 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 更新日志
此版本主要新增的内容如下:
- 提高了大量用戶端連接配接時使用 INFO 指令的查詢速度。
- 在所有阻止指令上都大大加快了速度:現在可以阻止在同一鍵上是 O(1)而不是 O(N)。
- 陳舊的副本現在允許 MULTI/EXEC。
- 新指令:LCS(最長公共子序列)。
- 添加新配置以使 DEL 像 UNLINK。
- RDB 加載加速。
- 修複了許多錯誤。
5.Redis 6.0.0 GA 更新日志
此日志更新的主要内容如下:
- 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 能力是我們最關注的功能了,有人用它和單線程的版本做個一個性能對比,如下圖所示:
(注:圖檔來源于 iTushou.com)
從以上結果可以看到 GET/SET 指令在多線程版本中的性能相比單線程已經翻倍了。
總體來說,此次 Redis 6.0 帶給我們的功能還是很大并且很實用的,隻是版本改動太大,我們需要等待時間的驗證和大量的測試之後才建議上線至生産環境。
【雲栖号線上課堂】每天都有産品技術專家分享!
課程位址:
https://yqh.aliyun.com/live立即加入社群,與專家面對面,及時了解課程最新動态!
【雲栖号線上課堂 社群】
https://c.tb.cn/F3.Z8gvnK
原文釋出時間:2020-05-03
本文作者:Java中文社群
本文來自:“
掘金”,了解相關資訊可以關注“掘金”