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