天天看點

Redis開發與運維. 1.6 Redis重大版本

<b>1.6 redis重大版本</b>

redis借鑒了linux作業系統對于版本号的命名規則:版本号第二位如果是奇數,則為非穩定版本(例如2.7、2.9、3.1),如果是偶數,則為穩定版本(例如2.6、2.8、3.0、3.2)。目前奇數版本就是下一個穩定版本的開發版本,例如2.9版本是3.0版本的開發版本。是以我們在生産環境通常選取偶數版本的redis,如果對于某些新的特性想提前了解和使用,可以選擇最新的奇數版本。

介紹一門技術的版本是很多技術圖書的必備内容,通常讀者容易忽略,但随着你對這門技術深入學習後,會覺得“備感親切”,而且通常也會關注新版本的特性,本小節将對redis發展過程中的一些重要版本及特性進行說明。

1.?redis 2.6

redis 2.6在2012年正式釋出,經曆了17個版本,到2.6.17版本,相比于redis

2.4,主要特性如下:

1)服務端支援lua腳本。

2)去掉虛拟記憶體相關功能。

3)放開對用戶端連接配接數的寫死限制。

4)鍵的過期時間支援毫秒。

5)從節點提供隻讀功能。

6)兩個新的位圖指令: bitcount和bitop。

7)增強了redis-benchmark的功能:支援定制化的壓測,csv輸出等功能。

8)基于浮點數自增指令:incrbyfloat和hincrbyfloat。

9)redis-cli可以使用--eval參數實作lua腳本執行。

10)shutdown指令增強。

11)info可以按照section輸出,并且添加了一些統計項。

12)重構了大量的核心代碼,所有叢集相關的代碼都去掉了,cluster功能将會是3.0版本最大的亮點。

13)sort指令優化。

2.?redis 2.8

redis 2.8在2013年11月22日正式釋出,經曆了24個版本,到2.8.24版本,相比于redis

2.6,主要特性如下:

1)添加部分主從複制的功能,在一定程度上降低了由于網絡問題,造成頻繁全量複制生成rdb對系統造成的壓力。

2)嘗試性地支援ipv6。

3)可以通過config set指令設定maxclients。

4)可以用bind指令綁定多個ip位址。

5)redis設定了明顯的程序名,友善使用ps指令檢視系統程序。

6)config rewrite指令可以将config

set持久化到redis配置檔案中。

7)釋出訂閱添加了pubsub指令。

8)redis sentinel第二版,相比于redis

2.6的redis sentinel,此版本已經變成生産可用。

3.?redis 3.0

redis 3.0在2015年4月1日正式釋出,截止到本書完成已經到3.0.7版本,相比于redis2.8主要特性如下:

redis 3.0最大的改動就是添加redis的分布式實作redis

cluster,填補了redis官方沒有分布式實作的空白。redis cluster經曆了4年才正式釋出也是有原因的,具體可以參考redis cluster的開發日志(http://antirez.com/news/79)。

1)redis cluster:redis的官方分布式實作。

2)全新的embedded string對象編碼結果,優化小對象記憶體通路,在特定的工作負載下速度大幅提升。

3)lru算法大幅提升。

4)migrate連接配接緩存,大幅提升鍵遷移的速度。

5)migrate指令兩個新的參數copy和replace。

6)新的client pause指令,在指定時間内停止處理用戶端請求。

7)bitcount指令性能提升。

8)config set設定maxmemory時候可以設定不同的機關(之前隻能是位元組),例如config set maxmemory 1gb。

9)redis日志小做調整:日志中會反應目前執行個體的角色(master或者slave)。

10)incr指令性能提升。

4.?redis 3.2

redis 3.2在2016年5月6日正式釋出,相比于redis

3.0主要特征如下:

1)添加geo相關功能。

2)sds在速度和節省空間上都做了優化。

3)支援用upstart或者systemd管理redis程序。?

4)新的list編碼類型:quicklist。

5)從節點讀取過期資料保證一緻性。

6)添加了hstrlen指令。

7)增強了debug指令,支援了更多的參數。

8)lua腳本功能增強。

9)添加了lua debugger。

10)config set支援更多的配置參數。

11)優化了redis崩潰後的相關報告。

12)新的rdb格式,但是仍然相容舊的rdb。

13)加速rdb的加載速度。

14)spop指令支援個數參數。

15)cluster nodes指令得到加速。

16)jemalloc更新到4.0.3版本。

5.?redis 4.0

可能出乎很多人的意料,redis 3.2之後的版本是4.0,而不是3.4、3.6、3.8。一般這種重大版本号的更新也意味着軟體或者工具本身發生了重大變革,直到本書截稿前,redis釋出了4.0-rc2,下面列出redis 4.0的新特性:

1)提供了子產品系統,友善第三方開發者拓展redis的功能,更多子產品詳見:http://redismodules.com。

2)psync 2.0:優化了之前版本中,主從節點切換必然引起全量複制的問題。

3)提供了新的緩存剔除算法:lfu(last

frequently used),并對已有算法進行了優化。

4)提供了非阻塞del和flushall/flushdb功能,有效解決删除bigkey可能造成的redis阻塞。

5)提供了rdb-aof混合持久化格式,充分利用了aof和rdb各自優勢。

6)提供memory指令,實作對記憶體更為全面的監控統計。

7)提供了互動資料庫功能,實作redis内部資料庫之間的資料置換。

8)redis cluster相容nat和docker。

繼續閱讀