高性能 key-value 數據庫 Redis 短期發展規劃

fmms 13年前發布 | 11K 次閱讀 Redis

剛剛Redis的第一作者@antirez發表了一篇博文,對Redis的后續發展規劃做了一個比較明確的描述。下面是NoSQLFan的簡單翻譯,關注Redis的同學不要錯過。redis.gif

Lua腳本支持

對于Redis嵌入Lua腳本執行,目前已經有比較清晰的思路,你可以在這里看到具體的描述。實際上腳本支持的工作已經完成了一部分,應該會在下一個穩定版本中就支持。這里面你唯一需要關注的可能就是,一些命令可能支持時間會比較長的問題(關于這個話題目前我們在Redis的Google Group上已經有一些討論了)。

腳本支持將會在2.6版本中加入,而我們會盡量在今年年底發布2.6的第一個RC版本。因為在2.6版本中還有一些其它功能,目前我還無法確定具體會支持的功能,但是我會嘗試按時間驅動的版本發布方式,盡量會將腳本支持和其它計劃中的東西都在穩定版中實現。

Redis集群功能

Redis cluster 是下一階段最重要的功能之一,實際上你可以通過這篇文章了解到Redis集群的一些設計思想和實現功能。但有一點我需要說明,就是集群所支持的功能,不會超出單機所支持的功能。而且并不是單機的所有功能都會在集群中實現,特別是對于多個key值的操作。這部分內容正在開發,在可預見的情況下,會盡量保證這些功能的可靠性。

Redis 集群能夠容忍一般的節點故障和網絡故障。但是需要說明的是,這個一般的情況,只包括一小部分節點故障和小規模的網絡中斷情況。我們不打算通過最終一致性的方式來解決諸如大型的網絡故障的問題。

Redis 集群功能和腳本功能同樣重要,但是集群功能得在3.0版本才推出。因為相對來說,腳本支持實現上會更容易一些,并且對大多數用戶來說,用腳本來實現定制化功能的需要也更強烈一些。

實際上你目前已經可以試玩一下Redis集群的功能了,但目前實現還不完善。可能還需要幾個月的開發才能進入到beta版本,到時我們才會更進行更 精細的發進并最終發布穩定版。我們會盡量在集群功能足夠穩定后再發布。因為Redis目前已經能夠支持很多應用場景了,所以我們在集群功能上會非常謹慎, 盡量不會對原有功能造成不必要的影響。

當然,好的一面是Redis的集群功能在設計上非常簡單。這讓我們很有信心可以在花費一段時間后能得到一個靠譜的集群實現。

Replication功能的改進

為了更好的實現Redis集群功能,我們需要對現有的Replication機制進行改進。比如我們會修改數據同步方案,使得主從連接出問題后,不 必總是把全部數據進行重傳。當然,這可能會有一定的條件,比如連接斷開的時間需要在一定范圍內,并且能夠通過某種機制識別到斷開前數據同步的進度。簡單來 說,具體實現方式就是在slave和master斷開連接后,master還是會繼續發送操作日志,這部分日志會被緩存起來,等slave再連接上 master的時候,我們再將緩存這部分操作日志傳給它。

這個功能可能需要在3.0或者更晚才能發布。因為現在的方案雖然并非最完美的,但是對Redis集群功能來說可能也夠了。

持久化方案的改進

目前Redis支持兩種方式的持久化,RDB文件和AOF日志。這兩種都有各自的好處。目前還是不特別明確會如何進行改進,可能我們會將兩種方式合 并起來,或者是對AOF方式做一次比較大的改進。比如可能不再需要在線的rewrite AOF日志(rewrite可能能夠通過外部程序或者獨立的Redis線程來完成)。

雖然目前改進方向不是很明確,但是從今年初開始,在這方面我們積累了很多不錯的想法,我們會通過實驗來找出最好的方案。

其實目前很多用戶并不清楚通過AOF和RDB的方式,Redis也可以是非常可靠的,所以我們希望在用戶理解上和具體實現上,都能夠讓Redis AOF都更可靠一些。就像目前成熟的SQL數據庫一樣。

這也是在集群功能后才會來做的事。

進行一些內部改造

我們打算利用現有的Pub/Sub機制來實現一些Redis內部的通信,比如key值過期,客戶端連接/斷開,對key值進行了操作等等事件。到時 我們能支持使用者結合Lua腳本擴展來實現這些功能。比如將所有過期的key值放到一個list中,或者實現一些需要客戶端結合Pub/Sub才能實現的 功能。

提供更精確的過期時間

我們會提供毫秒級別的過期時間設置,目前過期時間只能精確到秒級,雖然對于大多數應用場景來說已經足夠了。

長數據的讀寫操作性能改進

如果你看一下 ’slowset’ 這個分支,你可以已經發現我們正在做這方面的工作。需要說明一下,這里說的長數據,是指范圍在100k到1MB之間長度。對于kb級別的數據,Redis目前的處理性能已經非常高了。

其它小功能

你可以看一下這個新功能的list,這里面有很多我們會實現的功能,這些功能比較小,就不一一列舉了。

來源:antirez.com

文章出處:http://blog.nosqlfan.com/html/3405.html

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!