1. 程式人生 > >Redis 5.0 正式釋出!一網打盡所有新特性!

Redis 5.0 正式釋出!一網打盡所有新特性!

作為一統快取江山的redis,正式釋出了5.0穩定版(stable),激不激動,開不開森?Github連結:https://github.com/antirez/redis/releases/tag/5.0.0 ,讓我們一起看看它帶來了哪些振奮人心的新特性:

官方列舉特性如下:

Redis開源社群版新特性

下面我們對一些重要特性進行更深入的瞭解。

Streams

全新的資料型別:Streams。官方把這個當做是最重要的改進(The most important user facing improvement is without doubts the introduction

of the new general purpose data type after years: the streams.

)。而且官方提到在發版本的幾個小時前還在修復streams的問題,所以官方也不敢保證release版本是否有一些比較嚴重的BUG(T T),官方還是建議大家在生產環境不要使用streams,這樣可能會有更好的體驗,扎心了(People not using the streams can have probably a better production-ready

experience with Redis 5)。

筆者接下來還會單獨撰文剖析Streams,敬請關注。

cluster manager with c

redis終於還是拋棄了ruby,維護過redis3.x和redis4.x的都知道,主要依賴redis-trib.rb指令碼,redis5.0徹底拋棄了它,將叢集管理功能全部整合到完全用C寫的redis-cli中。可以通過命令redis-cli --cluster help檢視幫助資訊。

LOLWUT

redis5.0新增的一個命令,官方對它的描述是:a piece of art inside a database command,翻譯過來可以資料庫命令中的一件藝術品(老外真幽默)。

這個方法原始碼註釋如下:

This file implements the LOLWUT command. The command should do something

fun and interesting, and should be replaced by a new implementation at each new version of Redis。原始碼連結:https://github.com/antirez/redis/blob/5.0.0/src/lolwut5.c,有興趣的同學可以看看redis作者在5.0版本中實現了些什麼好玩的東西。

有興趣的同學還可以延伸閱讀:http://antirez.com/news/123

Lua改進

lua指令碼能更好的傳播到replicas/AOF。replicas也就是以前的slave,大家都知道redis的slave事件前段時間鬧的沸沸揚揚,現在redis官方都改稱replicas了,並且申明除非為了API向後相容,否則不再使用slave這個詞(We no longer use the "slave" word if not for API backward compatibility.)。

lua指令碼現在還能支援超時,並且可以在replica中進入BUSY狀態。

動態HZ

以前redis版本的hz都是固定的,5.0將hz動態化是為了平衡空閒CPU的使用率和響應能力。

其他一些比如HyperLogLog實現改進,RDB檔案新增儲存LFU和LRU資訊,sorted set新增兩個命令ZPOPMIN/MAX,Jemalloc升級到5.1等特性就不一一解讀了。

Redis Enterprise Software新特性

Redis開源許可從AGPL 遷移到將 Apache v2.0 與 Commons Clause 相結合的許可證,下面介紹的這些特性不再是開源軟體,而是原始碼可用(source available)。

備註:Commons Clause 的初衷是為了抵禦一些不良行為。如那些使用原始碼,卻不對開原始碼維護做出補償的公司。” ---- Commons Clause 開發者兼 FOSSA 創始人 Kevin Wang。

support docker

現在官方版本正式支援在Docker容器上部署和執行Redis叢集了。有了官方的映象,你能非常容易並快速部署幾個容器來執行一個可擴充套件的,高可用的Redis叢集。想要了解更多請戳連結:https://redislabs.com/redis-enterprise-documentation/getting-started/docker/。

Redis Labs’ Modules

Redis Labs開發了3個模組,並且被Redis企業軟體(簡稱RS)認證,這些模組是:

RediSearch:這個模組將RS變成了一個基於記憶體的分散式全文索引和搜尋引擎,感覺好牛逼的樣子(ES表示不服)。

ReJSON:通過模組名稱就知道,JSON作為Redis的內建資料型別。

ReBloom: RS具有可擴充套件的Bloom過濾器,並且是一個數據型別。Bloom過濾器是一種概率性的資料結構,在快速判斷某些元素是否被包含在一個集合這方便表現的非常好。