Redis 4.0-rc1正式发布了,这是Redis 4.0版本的首个RC候选版本。Redis是一款高性能的Key-Value数据库,凭借出色的读写效率和灵活的数据结构,能够在很大程度上弥补memcached这类Key-Value存储方案的不足。在不少业务场景中,Redis也能作为关系型数据库的重要补充方案使用。此外,它还提供了Python、Ruby、Erlang、PHP等多种客户端,开发和接入都非常便捷。

以下是Redis 4.0-rc1版本发布中最值得关注的内容:主要特性
Redis模块化系统。Redis现在允许开发者编写模块,以扩展Redis功能并实现全新的数据类型。模块API提供了一套完整的抽象层,将Redis核心与模块实现有效分离,使不同版本的Redis能够加载同一个模块而无需修改。更多详细信息可参考模块文档:https://github.com/antirez/redis/blob/unstable/src/modules/INTRO.md
部分复制(PSYNC)版本2。复制协议得到了增强,并且保持向后兼容,这意味着Redis 4.0仍然可以作为旧版本实例的从节点使用。该改进使得在过去无法实现的场景下,也可以完成主从之间的部分重新同步,例如主从切换、故障转移以及从实例重启之后。即使原主节点变成从节点,通常也可以与新主节点进行部分重同步,前提是新主节点原本是旧主实例的从节点。级联从节点(子从节点)的复制机制如今也发生了明显变化,每个从节点都会接收由顶级主节点生成的同一份复制流。
缓存淘汰算法优化。Redis 4.0引入了LFU(Least Frequently Used,最近最少使用频率)作为新的内存淘汰算法,在功能、性能和准确性方面都对现有算法进行了增强。关于这项改动的更多说明,可以参考这篇博客:https://antirez.com/news/109
键的异步释放。Redis现在可以在后台线程中删除键,从而避免阻塞服务器主线程。新的UNLINK命令与DEL命令作用相同,但采用非阻塞方式执行。同时,为了支持整个数据集或单个数据库的异步清理,FLUSHALL和FLUSHDB也新增了“ASYNC”选项。
混合RDB-AOF格式。如果在AOF文件重写时启用了这种新格式,重写过程将先使用更紧凑、生成速度更快的RDB格式,再将AOF流追加到文件中。这种方式可以在启用AOF持久化时,显著提升重写效率和重新加载速度。
新的内存监控命令。Redis新增了多种内存分析能力,可用于执行不同类型的内存排查工作,例如通过MEMORY DOCTOR定位和诊断内存问题,类似于LATENCY DOCTOR;还可以报告单个键占用的内存大小,并比INFO命令提供更深入的Redis内存使用情况分析。
Redis集群对NAT / Docker的支持。为了让集群实例能够向集群中的其他节点通告指定的IP地址、客户端端口以及总线端口,Redis新增了相关功能,而不再完全依赖自动检测到的IP。这一改进需要对总线协议进行变更,因此用户在将Redis 3.2集群升级到4.0时,需要批量重启所有节点。
性能收益会根据实际存储的数据集类型而有所不同。
其他较小但实用的功能
RDB文件检查工具现在与Redis自身加载RDB文件到内存时使用相同的代码库,从而更好地支持RDB格式中的64位长度、二进制排序集分数等特性。
SWAPDB命令:可以完全且立即(无延迟)地交换两个Redis数据库。
改进了`dict.c',也就是Redis哈希表实现部分。
安全性增强:将POST和Host:命令映射为QUIT,以防止跨协议脚本攻击。
RPUSHX和LPUSHX现在支持可变数量的元素。
在INFO输出中增加了写入时所使用的附加内存报告。
Redis多个核心组件都进行了大规模重构和优化。
发布主页和相关链接
下载地址
Source code (zip)
Source code (tar.gz)
https://redis.io/download
