Redis 8.0發(fā)布,性能大幅提升,重新回歸開源!
喜大普奔,時(shí)隔兩年后,5.1勞動(dòng)節(jié)這一天,Redis 8.0正式發(fā)布了。
Redis 創(chuàng)始人antirez發(fā)文宣布「Redis 再次開源」:
"五個(gè)月前,我重新回歸 Redis,并迅速開始與同事們討論將許可證切換到 AGPL 的可能性。 結(jié)果發(fā)現(xiàn)公司內(nèi)部早就在關(guān)注這個(gè)問(wèn)題,不少人都覺得 AGPL 比 SSPL 更好。雖然 Redis 最終選擇了 SSPL,但公司內(nèi)部對(duì)此的討論仍在繼續(xù)。 于是我開始積極為 AGPL 許可證擁躉爭(zhēng)取更多支持。因?yàn)槲抑庇X認(rèn)為,SSPL 在實(shí)踐中未能被社區(qū)接受。OSI 不會(huì)接受它,軟件社區(qū)也不會(huì)把 SSPL 視為開源許可證。 沒(méi)過(guò)多久,我發(fā)現(xiàn)自己這個(gè)“假想”在公司的各個(gè)層面上得到了越來(lái)越多的支持。 說(shuō)實(shí)話,我真心希望自己為全新 Vector Sets 數(shù)據(jù)類型編寫的代碼能通過(guò)開源許可證發(fā)布。 編寫開源軟件對(duì)我而言已是根深蒂固:在我的職業(yè)生涯中,我很少寫過(guò)其他東西。現(xiàn)在年紀(jì)太大了,更不適合嘗試“新東西”。聽起來(lái)可能有點(diǎn)理想主義,但我確實(shí)是懷著極大的熱情在編寫 Vector Sets,前提就是 Redis 和我的工作成果能夠再次開源。 我很清楚,我們的工作核心只是改進(jìn) Redis,持續(xù)構(gòu)建一套良好、實(shí)用、簡(jiǎn)潔且能夠根據(jù)軟件棧需求進(jìn)行調(diào)整的系統(tǒng)。然而,回歸開源許可證能夠更好地與 Redis 項(xiàng)目定位保持一致、擴(kuò)大用戶群體接受度,也是為這一人類共同努力的成果做出貢獻(xiàn)的基礎(chǔ)。 所以回歸開源許可證雖然不是我一個(gè)人能夠決定的,但我仍然希望自己能為此做出一點(diǎn)努力。今天我高興地看到 Redis 再次回歸開源陣營(yíng),并且遵循 AGPL v3 許可證。 現(xiàn)在是時(shí)候回歸終端了,用我所能寫出的最佳代碼來(lái)表達(dá)對(duì)于 Redis 用戶的敬意,也希望 Vector Sets 能夠更加實(shí)用。我還有不少改進(jìn)思路,希望大家的反饋能夠激發(fā)我更多的想法。"
總結(jié)一下就是,Redis 決定在保留 RSALv2/SSPLv1 的同時(shí),新增 OSI 批準(zhǔn)的 AGPLv3作為 Redis 8 及以后版本的授權(quán)選項(xiàng)。
這確實(shí)是個(gè)好消息,因?yàn)橹暗腟SPL協(xié)議,完全就是個(gè)偽開源協(xié)議,被噴成狗。
另外,在新特性方面,給大家做個(gè)解讀。
新的數(shù)據(jù)結(jié)構(gòu)
Redis 8.0新增了8種數(shù)據(jù)結(jié)構(gòu),分別是向量集合 (vector set)、JSON、時(shí)間序列,以及5種概率結(jié)構(gòu),包括布隆過(guò)濾器、布谷鳥過(guò)濾器、Count-min sketch、top-k 和 t-digest。
向量集合,這是一種用于向量相似性搜索的新數(shù)據(jù)類型。由 Redis 的原始創(chuàng)建者 Salvatore Sanfilippo 開發(fā),向量集借鑒了有序集(sorted set)的靈感,并擴(kuò)展了有序集的概念,允許存儲(chǔ)和查詢高維向量嵌入,從而增強(qiáng)了 Redis 在涉及語(yǔ)義搜索和推薦系統(tǒng)等 AI 用例中的能力。向量集補(bǔ)充了 Redis Query Engine 中現(xiàn)有的向量搜索功能。
JSON,在 Redis 8 中,JSON 數(shù)據(jù)結(jié)構(gòu)允許將 JSON 文檔作為鍵存儲(chǔ)在 Redis 中。Redis 提供了使用 JSONPath 語(yǔ)言檢索和操作文檔的命令,以實(shí)現(xiàn)對(duì)特定元素的更細(xì)粒度且高效的訪問(wèn)。Redis 還支持原子更新,因此可以修改 JSON 文檔的某些部分,而無(wú)需先檢索整個(gè)文檔。
時(shí)間序列,時(shí)間序列簡(jiǎn)化了處理快速變化的帶時(shí)間戳數(shù)據(jù)(如來(lái)自物聯(lián)網(wǎng)傳感器、系統(tǒng)遙測(cè)、股票價(jià)格、商品價(jià)格、外匯匯率和加密貨幣價(jià)格的數(shù)據(jù))的用例。
概率性數(shù)據(jù)結(jié)構(gòu),概率性數(shù)據(jù)結(jié)構(gòu)能夠更快地處理關(guān)于數(shù)據(jù)流和大型數(shù)據(jù)集的常見問(wèn)題。Redis 8.0新推出了有 5 種概率性數(shù)據(jù)結(jié)構(gòu)。
- Bloom filter和 Cuckoo filter
用于檢查給定值是否已在數(shù)據(jù)流中出現(xiàn)過(guò)
- Count-min sketch
用于估計(jì)給定值在數(shù)據(jù)流中出現(xiàn)的次數(shù)
- Top-k
用于查找數(shù)據(jù)流中最常見的值
- t-digest
用于查詢數(shù)據(jù)流中有多少比例的值小于/大于給定值。
(其中Bloom filter以前也支持,但是要通過(guò)插件或者Redisson這種框架來(lái)實(shí)現(xiàn)。)
性能提升
Redis 8 附帶了個(gè)Query Engine,這個(gè)版本可以為哈希和 JSON 數(shù)據(jù)結(jié)構(gòu)中存儲(chǔ)的數(shù)據(jù)創(chuàng)建二級(jí)索引。 Redis Query Engine 最常見的用途包括向量搜索、按條件或標(biāo)簽返回精確匹配項(xiàng)的數(shù)據(jù)查詢,以及按關(guān)鍵詞或語(yǔ)義返回最佳匹配項(xiàng)的搜索查詢。
Redis Query Engine可以通過(guò)兩種新的方式進(jìn)行擴(kuò)展,官方實(shí)測(cè)可以通過(guò)水平(集群)和垂直(多線程)擴(kuò)展,查詢處理能力能提升 16 倍。
其次是命令執(zhí)行速度大大提升,在 149 個(gè)基準(zhǔn)測(cè)試中,90 個(gè)命令運(yùn)行更快,延遲更低,最高的提升了87%。
并且新版本引入的新復(fù)制機(jī)制,使同步時(shí)間減少 18%,這還是和 7.2.5相比,如果和更早的版本比,提升會(huì)更大。
還有就是線程模型也有些變化, 之前在 6.0中,I/O不是引入了多線程嗎,但是效果其實(shí)有限,在Redis 8 中,引入了新的 I/O 線程實(shí)現(xiàn),可以通過(guò)設(shè)置 io-threads 配置參數(shù)來(lái)啟用它,開啟之后,可以把吞吐量提升1倍。
以上,就是Redis 8.0的主要更新內(nèi)容。那么,你會(huì)考慮升級(jí)嗎?