Redis 6 新特性
簡(jiǎn)介
Redis 6.0穩定版出來(lái)了。這一次是從發(fā)布第一個(gè)候選版本到最終發(fā)布穩定版本之間的一個(gè)相對較短的周期。它花了大約四個(gè)月的時(shí)間,這不是一個(gè)小數目的時(shí)間,但與我們過(guò)去的記錄相比,也不是很多。
主要的變化有:
SSL、ACLs、RESP3、客戶(hù)端緩存、線(xiàn)程I/O、Redis benchmark中的集群支持和改進(jìn)的Redis cli集群支持、Redis作為Redis的一個(gè)模塊,以及Redis集群代理。
Redis 6新特性
多線(xiàn)程IO
Redis 6引入多線(xiàn)程IO,但多線(xiàn)程部分只是用來(lái)處理網(wǎng)絡(luò )數據的讀寫(xiě)和協(xié)議解析,執行命令仍然是單線(xiàn)程。之所以這么設計是不想因為多線(xiàn)程而變得復雜,需要去控制 key、lua、事務(wù),LPUSH/LPOP 等等的并發(fā)問(wèn)題。
客戶(hù)端緩存
客戶(hù)端緩存在某些方面進(jìn)行了重新設計,特別是放棄了緩存槽方法而只使用密鑰名。在分析了備選方案后,在其他Redis核心團隊成員的幫助下,最終這種方法看起來(lái)更好。除此之外,最后這個(gè)特性用我在這個(gè)特性的backlog中的東西完成了,特別是“廣播模式”,我相信這將是這個(gè)特性最流行的使用模式之一。
當使用廣播時(shí),服務(wù)器不再試圖記住每個(gè)客戶(hù)端請求的密鑰。相反,客戶(hù)端訂閱密鑰前綴:每次修改與前綴匹配的密鑰時(shí),它們都會(huì )收到通知。這意味著(zhù)更多的消息(但僅針對選定前綴),但服務(wù)器端沒(méi)有內存工作。此外,現在支持opt-in/opt-out模式,因此客戶(hù)端不使用廣播模式,可以準確地告訴服務(wù)器客戶(hù)端將緩存什么,以減少無(wú)效消息的數量?;旧?,當需要低內存模式,以及需要非常選擇性(低帶寬)模式時(shí),該特性現在都要好得多。
ACL權限控制
- 支持對客戶(hù)端的權限控制,實(shí)現對不同的key授予不同的操作權限。
- 有一個(gè)新的ACL日志命令,允許查看所有違反ACL的客戶(hù)機、訪(fǎng)問(wèn)不應該訪(fǎng)問(wèn)的命令、訪(fǎng)問(wèn)不應該訪(fǎng)問(wèn)的密鑰,或者驗證嘗試失敗。這對于調試ACL問(wèn)題非常有用。
支持SSL
Redis 5之前的版本不只是數據在傳輸過(guò)程中進(jìn)行加密,Redis 6支持了通道加密的功能,使得Redis更加安全。
RESP3協(xié)議
RESP(Redis Serialization Protocol)是 Redis 服務(wù)端與客戶(hù)端之間通信的協(xié)議。Redis 5 使用的是 RESP2,而 Redis 6 開(kāi)始在兼容 RESP2 的基礎上,開(kāi)始支持 RESP3。
推出RESP3的目的:一是因為希望能為客戶(hù)端提供更多的語(yǔ)義化響應,以開(kāi)發(fā)使用舊協(xié)議難以實(shí)現的功能;另一個(gè)原因是實(shí)現 Client-side-caching(客戶(hù)端緩存)功能。
PSYNC2 改進(jìn)
PSYNC2的復制協(xié)議現在已經(jīng)改進(jìn)了。Redis將能夠更頻繁地進(jìn)行部分重新同步,因為現在可以調整協(xié)議中的最終ping,從而使副本和主服務(wù)器能夠找到共同的偏移量。
改進(jìn) Redis 命令行的超時(shí)選項
帶有超時(shí)的Redis命令現在好得多:不僅BLPOP和其他命令以前接受秒,現在接受十進(jìn)制數,而且實(shí)際分辨率得到了提高,以便永遠不會(huì )比當前的“HZ”值差,而不管連接了多少客戶(hù)端。
提升了RDB加載速度
RDB文件現在可以更快地加載。根據文件的實(shí)際組成(較大或較小的值),您可以預期有20/30%的改進(jìn)。當有許多客戶(hù)機連接時(shí),信息也變得更快了,這是一個(gè)長(cháng)期的問(wèn)題,現在終于消失了。
STRALGO 新命令
我們有一個(gè)新命令STRALGO,它實(shí)現了復雜的字符串算法。目前唯一實(shí)現的是LCS(最長(cháng)公共子序列),它是一種重要的算法,用于比較冠狀病毒的RNA(以及其他生物體的DNA和RNA)。發(fā)生的事情太大了,需要保留Redis內部的一些痕跡。
Redis集群代理模塊
在 Redis 集群中,客戶(hù)端會(huì )非常分散,現在為此引入了一個(gè)集群代理,可以為客戶(hù)端抽象 Redis 群集,使其像正在與單個(gè)實(shí)例進(jìn)行對話(huà)一樣。同時(shí)在簡(jiǎn)單且客戶(hù)端僅使用簡(jiǎn)單命令和功能時(shí)執行多路復用。

結束語(yǔ)
Redis 6是Redis*有史以來(lái)最大的版本,所以即使它是穩定的,也要小心處理,在投入生產(chǎn)之前測試一下你的工作負載。但我們要注意的是,到目前為止我們還沒(méi)有看到大問(wèn)題。當我們收集錯誤報告時(shí),我們將準備盡快發(fā)布Redis6.0.1。
評論