Redis 6.0.0 GA 穩定版本發布
Redis創始人宣布 Redis 6.0.0穩定版正式GA。從首個RC版本到正式GA經歷了四個月左右的時間,正如Redis作者antirez所說,這是迄今最“企業”化的版本(SSL與ACL等特性與企業極相關),也是最大的版本,同時也是參與人數最多的版本。GA版本除了比RC1更穩定,還對部分功能進行了重新設計或是進一步的改進。重要的新特性已在RC1中公佈過:
- 許多新的模塊API(modules API)
- 更好的過期週期(expire cycle)
- SSL
- ACL
- RESP3
- 客戶端緩存
- 線程I/O
- 在副本上進行無盤複製
- Redis-benchmark 集群支持與Redis-cli 改進
- Systemd 支持重寫
- Redis 集群代理與Redis 6 一起發布(位於不同倉庫)
- Disque 模塊與Redis 6 一起發布(位於不同倉庫)
- 對客戶端緩存某方面的功能進行了重新設計,主要是放棄了“緩存插槽”(caching slot)改為使用鍵名(key name)。另外還新增了“廣播模式”(broadcasting mode),當使用廣播模式時,服務器不需要記住每個客戶端請求的key。相反,客戶端會訂閱key 的前綴:每當有匹配前綴的key 被修改時,客戶端就會收到通知。
- 用於主從復制的RDB 文件如果不再使用會被刪除
- 新的 ACL LOG 命令,可查看不遵循ACL 權限的客戶端(例如訪問了無權限的命令和key,以及驗證失敗),主要用於調試ACL 問題。此外還有重新實現的ACL GENPASS,它使用了基於SHA256 的HMAC 加密算法。
- 改進PSYNC2 主從復制協議
- 改進Redis 命令行的超時選項
- 提升RDB 文件的加載速度(~20/30% 的提升)
- 新的 STRALGO 命令,實現了複雜的字符串算法。這是一個重要的算法,主要用於比較冠狀病毒的RNA(以及其他生物體的DNA 和RNA)
重要新特性介紹
RESP3
這是 Redis 6 中的新網絡協議,但它是可選的,連接以RESP2 模式開始,只有使用新的HELLO 命令進行握手時,才進入新的協議模式。為什麼要使用新協議?因為舊的語義不夠。此外,RESP3 中還有其它功能,但是主要能力還是直接從Redis 返回複雜的數據類型,而客戶端對於數據類型的轉換是透明的。
ACL
作者認為Redis 需要ACL,因為人們在更大的環境中需要更好地控制哪些客戶端可以執行某些操作。同時,向Redis 添加ACL 的另一個要點是隔離,以保護數據免受應用程序錯誤的侵害。Redis 中還為ACL 提供了Redis 模塊接口,因此開發者可以編寫自定義身份驗證方法。
SSL
這一特性值得一提的是,工作是完全在沒有 antirez 參與的情況下完成的,這顯示了Redis 開發過程的變化。這可能需要簡單結合一下背景:Redis 6 中commit 次數最多的是antirez,達到685 次,而排在第二位的zhaozhao.zz commit 數量是81。
客戶端緩存
antirez此前已經詳細介紹過該特性,我們也有相關分享:Redis 6將採用全新協議RESP3,以提供客戶端緩存功能。當使用者需要進行快速存儲或快速取操作時,就需要在客戶端內存中存儲一小部分信息,這可以降低程序獲取數據時的延遲。
但是現在antirez 認為這是Redis 6 最不成熟的特性,他想在Redis 6 GA 之前對此進行改進。可能會添加一個新模式,該新模式要求服務器不維護有關客戶端的狀態,或者根本不維護任何狀態,並與更多消息進行交易。目前某些“緩存插槽”中過期的信息無法單一合併,antirez 表示一月份關於此特性還有更多工作要做。
Disque 成為模塊
Disque 目的是構建分佈式的內存中消息代理,此前它是一項實驗功能,現在在Redis 6中成為模塊,它可以支持集群消息總線API,可以阻止和恢復客戶端、支持計時器、模塊私有數據的AOF和RDB控制功能。
集群代理
在Redis集群中,客戶端會非常分散,現在為此引入了一個集群代理,可以為客戶端抽象Redis群集,使其像正在與單個實例進行對話一樣。同時在簡單且客戶端僅使用簡單命令和功能時執行多路復用。
模塊
Redis 6 的模塊API 達到了一個新高度,發展迅速,因為Redis Labs 從零開始就使用模塊系統來開發非常複雜的內容,使得Redis 實際上變成一個框架,可以將系統作為模塊來編寫,而不必從頭開始發明所有東西。
詳情查看 http://www.antirez.com/news/132
下載地址 https://redis.io/download