redis4.0新特性
1、 Redis modules system。redis允许开发者开发自定义模块,来扩展redis功能和新的数据类型。
2、 Partial Replication version 2(PSYNC2):
2.1、PSYNC1因为网络中断或者阻塞导致主从中断,恢复后必须重新到主节点dump一份全量数据同步到从节点。PSYNC2再中断恢复后只需要同步复制延迟的那部分数据。
2.2、PSYNC1在重启从节点需要重新全量同步数据。PSYNC2只部分同步增量数据。
2.3、在PSYNC1 当复制为链式复制的时候,如 A>B>C 主节点为A。当A出现问题,C节点不能正常复制B节点的数据。当提升B为主节点,C需要全量同步B的数据。在PSYNC2:PSYNC2解决了链式复制之间的关联性。A出现问题不影响C节点,B提升为主C不需要全量同步。
2.4、在使用星形复制。如一主两从。A>B , A>C 主节点为A。当A出现问题,B提升为主节点,C 重新指向主节点B。使用同步机制PSYNC2,C节点只做增量同步即可。在使用sentinel故障转移可以较少数据重新同步的延迟时间,避免大redis同步出现的网络带宽占满。
3、 cache回收增强。算法更新,提高精度和效率。
4、 Lazy Free
4.1、异步 DEL、FLUSHDB和FLUSHALL(lazy free主动删除的实现)。现在可以在其他线程非阻塞的删除数据,通过UNLINK命令实现(替代DEL)。同样的,为了让整个数据集或单个数据库异步释放,`FLUSHALL`和`FLUSHDB` 提供了ASYNC 选项,使用该选项后将异步完成,不阻塞server。
4.2、lazy free应用于被动删除中,目前有4种场景,对应一下配置,默认是关闭的。
5、 混合RDB + AOF格式。 如果启用,则在重写AOF文件时使用新格式:重写使用更紧凑和更快的方式来生成RDB格式,并将AOF流附加到文件。 这允许在使用AOF持久性时更快地重写和重新加载。
6、 新添加MEMORY 命令。可以使用不一样的方式执行内存分析,方便内排查内存相关的问题故障等,比如可以报告单个key的内存使用量,与INFO命令提供的内容相比,更深入地报告Redis内存使用情况。
7、 Redis Cluster support for NAT / Docker.Redis 4.0 将兼容 NAT和Docker,具体的使用方法在 redis.conf 。
8、 更节约内存,存储同样多的数据,需要更少的内存空间,减少的值取决于存储数据类型的种类。
9、 可以做内存碎片整理,逐步回收内存。当使用Jemalloc内存分配方案的时候,redis可以使用在线内存整理。(通过参数设置是否开启)
10、 Redis Cluster 的故障检测方式改变,node之间的通讯减少。
11、 慢日志记录客户端来源IP地址,这个小功能对于故障排查很有用处。
12、 交换数据库SWAPDB
13、新增两种内存策略
基于LFU,可以获取key的访问频度:
基于LFU机制,用户可以使用 scan + object freq 来发现热点key,当然redis也一起发布了更好用的工具——redis-cli,使用实例如下所示。