聽說Redis5.0發佈了,那個Streams好叼

在這個商業世界中,如果你佔領了概念高地就意味着有種先天的優勢。就好比你給自己起了一個名字叫Java。

最近幾年圈裏流行“stream”這個詞,只要沾上這個詞,就感覺不一樣了。流動起來如絲般爽滑。

java api 加入了stream。讓靜止的水強行流動。

Flink號稱自己是在一條Data Stream的河流上做計算。

Kafka直接說自己是分佈式流平臺。

Ignite說自己也適合做stream:

Spark直接有個模塊:Spark Stream:

看了下,只有ActiveMQ還在說自己只是一個message queue。可能因爲名字上帶了MQ了吧:

於是,Redis也耐不住寂寞了,覺得stream這個詞應該引入。看了上面的各種stream,你大概知道Redis是幹什麼的了吧,沒錯,就和kafka做的事情很像。

此時,我其實可以結束了。

但作爲一篇成熟的文章還是要多寫一點。湊不夠三百字不讓標原創。

一個新的數據類型

用Redis官方的說法,stream是redis衆多數據類型的其中一個,這是一個新的數據類型。把stream歸爲數據類型的一種,這有利於Redis概念上的一脈相承。

秩序要井然,否則顯得亂糟糟。這一點也在redis官方介紹中可見端倪,其實連他們自己都不好意思把stream作爲一個數據類型:

所以,此時stream充其量作爲一個抽象的數據類型,劃歸爲抽象,這樣既和之前的概念對齊,也確保了描述的精確。

一個append only數據結構

官方說他們這個stream是對日誌數據結構(log data structure)的高度抽象。stream首先是一個append only日誌數據結構,但實現更加的複雜,要比一般的日誌文件更強大。

一個既可以檢索又可以消費MQ

你是不是嗅出了一絲Kafka的氣息。kafka消費的時候就是在移動offset,數據依然在。你可以用同樣的邏輯來想Redis的stream。既然數據一直在是不是就可以檢索了,是的。

消費支持單一和consumer group

是不是又有kafka的既視感,沒錯,redis stream的單一消費和consumer group消費的概念都和kafka是一樣的。consumer group可以協調一組消費者來消費。

命令全都以X開頭

XADD、XRANGE 、XREVRANGE、XLEN、XREAD

添加

XADD

查詢

XRANGE、XREVRANGE

長度

XLEN

監聽

XREAD

組監聽

XGROUP、XREADGROUP、XACK

更多具體的命令手冊請移步https://redis.io/topics/streams-intro,或直接點擊“閱讀原文”。或者移步阿飛兄的公號鏈接《Streams:深入剖析Redis5.0全新數據結構》https://mp.weixin.qq.com/s/GpG3t_O_SxLGNklVnoOiYQ

一個天生驕傲的MQ

我不小心在redislab上找到了兩張圖,拿來供大家賞玩:

看起來簡直要比傳統的MQ吊炸天,不過人們發表瞭如下觀點:

希望Redis Streams真的如表格中那麼叼,這樣我們也就放心了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章