redis 3.2 遷移到4.x注意事項;
總體來說,4.x的向后兼容性很好,正常情況下,3.2升級到4.0是沒有任何問題的,下面主要說明一些4.x不能向后兼容的地方。
1、redis cluster4.x的總線協議不兼容3.2,目的是提供redis cluster 對 Docker / NAT的兼容性
2、redis cluster 的日志輸出格式有輕微的改變
3、對於可寫的slave,不會講寫的內容傳遞給他的sub_slave,因此,在可寫的slave寫數據,相當於本地操作。
4、RDB文件格式變化,4.x任然可以讀3.2的rdb文件,但是反之則不行
5、在4.0,某些日志格式和句子格式不一樣了
6、某些字段信息,特別是和復制相關的字段先現在不一樣了
7 、GEODIST, GEOPOS and GEOHASH return values changed for non existing keys:
8、slowlog 命令添加兩個額外的字段the client address and name.
4.0的主要特性
1、Redis modules system。redis允許開發者開發自定義模塊,來擴展redis功能和新的數據類型
2、Partial Replication (PSYNC) version 2。replication 協議加強(采用的向后兼容模式,因此4.0依然可以作為老的實例的slave),以便能夠在以前不可能的情況下部分地重新同步slaves和masters:比如:master 做了failover,slave實例重啟的時候。
即使masters變為了slaves,通常也能和新的masters通過partially resynchronize同步數據。現在slaves 和sub-slaves的復制的工作方式非常的不同,每一個slaves都是top-level master同樣的復制流。
3、cache回收增強。算法更新,提高精度和效率。
4、異步 DEL、FLUSHDB和FLUSHALL。現在可以在其他線程非阻塞的刪除數據。主要通過unlink命令實現。同樣的,,`FLUSHALL` and `FLUSHDB` 提供了ASYNC 選項,使用該選項后將異步完成,不阻塞server。
5、Mixed RDB-AOF format。引入新的AOF格式,在使用AOF做持久化的時候寫入和讀取都更高效。這個是一個可選的功能。
6、新添加MEMORY 命令。可以使用不一樣的方式執行內存分析,方便內排查內存相關的問題故障等,比如可以報告單個key的內存使用量,與INFO命令提供的內容相比,更深入地報告Redis內存使用情況。
7、Redis Cluster support for NAT / Docker.Redis 4.0 將兼容 NAT 和 Docker , 具體的使用方法在 redis.conf 。
# Example:
#
# cluster-announce-ip 10.1.1.5
# cluster-announce-port 6379
# cluster-announce-bus-port 6380
8、4.0更節約內存,存儲同樣多的數據,需要更少的內存空間,減少的值取決於存儲數據類型的種類。
9、可以做內存碎片整理,逐步回收內存。當使用Jemalloc內存分配方案的時候,redis可以使用在線內存整理。
10、Redis Cluster 的故障檢測方式改變,node之間的通訊減少。
https://raw.githubusercontent.com/antirez/redis/4.0/00-RELEASENOTES