Redis 3.0.0 正式版終于到來了!重要的新特性是集群(Redis Cluster),提供Redis功能子集(比如不支持多數據庫)的分布式、容錯的實現(多支持1000結點)。
Salvatore 'antirez' Sanfilippo在Google Groups里表示,這是Redis的重要時刻。“我相信今天的Redis 3.0.0將以某種方式完全改變Redis的面貌。”人們將認識到Redis是一個全新的東西,它的自動擴展、容錯和高可用性都大大提高,從此能夠在更大范圍承擔更關鍵的任務。
antirez還透露,內置的集群功能持續干了很多年,雖然能找到一些時間密集開發,但也不時被其他特性完全打斷,現在終于完成了。他預計社區能用好這些功能,積累必要的經驗,還要一到兩年。
他還說,Redis 3.0.0實際上標志著一個新階段和新的開發模式的開始。以后,大量已經開發的新功能將不再急于進入穩定版本,實際上Redis 3.0.0就放棄了很多新功能,回退到2.8,以保證新的穩定版本用戶能夠馬上使用。
他在帖子里重點提及的其他更新包括:
新的"embedded string"對象編碼,提升緩存命中率。在某些工作負載(尤其是管道化的高負載)下速度大幅提高。
大大改進了回收鍵的LRU近似算法。
AOF重寫功能被完全重新開發了,以減少進程終將積累的緩沖寫入時,由于硬盤速度慢而導致的延遲。
而在發布聲明中還列出了如下更新(相對于2.8):
WAIT command to block waiting for a write to be transmitted to the specified number of slaves.
MIGRATE connection caching. Much faster keys migraitons.
MIGARTE new options COPY and REPLACE.
CLIENT PAUSE command: stop processing client requests for a specified amount of time.
BITCOUNT performance improvements.
CONFIG SET accepts memory values in different units (for example you can use "CONFIG SET maxmemory 1gb").
Redis log format slightly changed reporting in each line the role of the instance (master/slave) or if it's a saving child log.
INCR performance improvements.
Hacker News上antirez回答了社區提出的一些問題,頗有價值,整理翻譯如下。
這是不是愚人節笑話啊? 非也,我們一向有在4月1日發布的傳統。去年HyperLogLog支持也是4月1日發布的嘛。而且那次因為HyperLogLog名字太科幻,好多人怎么都不肯相信這居然不是愚人節笑話呢。
再說,開源軟件嘛,怕什么愚人節,你下載代碼看看不就啥都知道了。
Redis之外還有什么其他更好的選擇啊? (這問題讓antirez怎么答,總不能不謙虛吧。仔細聽,他回答得很好。) 這得看使用場景,基本上還是就事論事、具體情況具體分析。程序員的本事不就體現在選擇正確的技術,然后在不同情況下優化嘛。你要考慮數據模型是否匹配所要解決的問題,運維因素,持久化保證,性能(需要多少個結點),可擴展性,是否簡單(搞這么復雜以后會不會老要我來支持啊),等等。
有了Cluster,Sentinel是不是就廢啦。 還沒那么快,Sentinel還在與Cluster并行繼續開發中。目前單實例場景下需要HA的話,它還是佳選擇。但長遠(可能很長遠哦)看,我們會用Cluster解決Sentinel的使用場景,不過在那之前我們會很早就告訴大家的。
誰能給我更詳細地講講"embedded string"對象編碼是啥,它針對什么工作負荷?能找到的文檔都太老了。 這事兒簡單。一般Redis里會有包含類型字段的對象結構,還有一個指針指向實際的對象表示。假設類型是REDIS_STRING,就得有指針指向一個"sds"字符串(sds是字符串庫用的名字)。
現在有了embedded string之后,就提供了一種特殊的字符串對象,用一個位置保持對象結構和字符串本身。這樣內存利用更有效,而且能夠大大改進內存本地性,所以差不多所有使用字符串對象的東西(字符串,或者比較大的要用字符串對象作為集合值的集合對象)性能都更好。
這種特殊字符串只用于小字符串(工作負荷里大多數字符串都不大)。
Redis
Redis 是一個高性能的key-value數據庫。Redis的出現,很大程度補償了memcached這類KV數據庫的不足。不僅可以用于緩存,也可以用于一些場景的存儲,在很多情況下是關系數據庫很好的補充。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。