redis 4.0 新特性
Redis 4.0在2017年7月發布為GA。包含幾個重大改進:更好的復制(PSYNC2),線程DEL / FLUSH,混合RDB + AOF格式,活動內存碎片整理,內存使用和性能改進。目前小版本更新到4.0.6
一、主從數據同步機制
PSYNC2: 新的一種主從復制同步機制。
PSYNC1:2.8~4.0之前版本的同步為PSYNC1
1、psync1因為網絡中斷或者阻塞導致主從中斷,恢復后必須重新到主節點dump一份全量數據同步到從節點。psync2再中斷恢復后只需要同步復制延遲的那部分數據。
2、psync1在重啟從節點需要重新全量同步數據。psync2只部分同步增量數據。
3、在PSYNC1 當復制為鏈式復制的時候,如 A>B>C 主節點為A。當A出現問題,C節點不能正常復制B節點的數據。當提升B為主節點,C需要全量同步B的數據。在PSYNC2:PSYNC2解決了鏈式復制之間的關聯性。A出現問題不影響C節點,B提升為主C不需要全量同步。
4、在使用星形復制。如一主兩從。A>B , A>C 主節點為A。當A出現問題,B提升為主節點,C 重新指向主節點B。使用同步機制PSYNC2,C節點只做增量同步即可。在使用sentinel故障轉移可以較少數據重新同步的延遲時間,避免大redis同步出現的網絡帶寬占滿。
二、命令優化
線程DEL / FLUSH 優化
Redis現在可以在不同的線程中刪除后台的key而不會阻塞服務器。 新的`UNLINK`命令與`DEL`相同,但是以非阻塞的方式工作。但是在key過期的內部依然使用了DEL。 類似地,為了讓整個數據集或單個數據庫異步釋放,在“FLUSHALL”和“FLUSHDB”中添加了“ASYNC”選項。(手動清除大的key 可以使用unlink,不阻塞)
三、慢日志記錄客戶端來源IP地址,這個小功能對於故障排查很有用處。
四、混合RDB + AOF格式
混合RDB + AOF格式: 混合的RDB-AOF格式。 如果啟用,則在重寫AOF文件時使用新格式:重寫使用更緊湊和更快的方式來生成RDB格式,並將AOF流附加到文件。 這允許在使用AOF持久性時更快地重寫和重新加載。(目前相對於2.8沒啥用)
五、新的管理命令
1、MEMORY 能夠執行不同類型的內存分析:內存問題的故障排除(使用MEMORY DOCTOR,類似於LATENCY DOCTOR),報告單個鍵使用的內存量,更深入地報告Redis內存使用情況 。
查看鍵值 使用 memory MEMORY USAGE key
memory統計分析 MEMORY STATS
MEMORY MALLOC-STATS
MEMORY PURGE
2、SWAPDB 能夠完全立即(無延遲)替換同實例下的兩個Redis數據庫(目前我們業務沒啥用)
六、
內存使用和性能改進:
1、Redis現在使用更少的內存來存儲相同數量的數據。
2、Redis現在可以對使用的內存進行碎片整理,並逐漸回收空間(這個功能依然是試用階段,可以通過參數不開啟即可)
以上列舉功能為4.0的重要更新,也是對我們目前redis大有改善,所列舉的功能已經和亞運測試過。業務上還沒有預發測試。
建議:新的邊緣業務redis上線使用redis4.0 。先進行預發功能連通測試。一段時間后,根據實際使用情況推進redis4.0更新。
