视频

了解更多
点击此处开始使用 Redis Enterprise。Redis Enterprise 让您能够随时随地处理任何规模的实时数据。
新版本是 Redis 部分功能的一次演进,增加了新功能,并在更好的资源利用率下提供了更强大的原始性能。
今天,我们自豪地宣布 Redis v7 的首个候选发布版本 (RC1) 可用。7.0 版本是该项目的一个重要里程碑,该项目在去年大部分时间里一直在开发中。这个主要发布版本提供了一个机会,可以在功能和内部结构方面进行更根本的改变。我们预计将遵循我们惯常的发布周期,因此在 Redis 7.0 全面可用之前,计划再发布两个候选版本,每个版本间隔大约三周。
Redis 7.0 增加了许多新功能,例如 Functions、ACL v2、分片 Pub/Sub 等。我们将在本文和接下来的一系列文章中介绍这些功能。此外,投入到此版本中的大量工作都集中在改进和优化大多数用户不太容易察觉的 Redis 部分。这项工作几乎涵盖了每个 Redis 子系统,涉及持久化、复制、网络、内存和计算使用。其结果是比以往任何时候都更快、更稳定、更经济的 Redis。
新的 Redis 版本并没有预示新的数据结构或将其操作方面推向新的领域。相反,它更多地是对项目进行内省式审视,挑战一些现有的设计假设,更大胆地改进基础设施,并吸收社区的需求和用例。
Redis Functions 是上述的一个例子。Functions 属于更广泛的 Redis 可编程性主题,即可编程 Redis 的能力。“编程 Redis”意味着让服务器执行用户逻辑,主要是为了数据本地性。自 2.6 版本引入 Lua 脚本以来,可编程性一直是 Redis 的一部分(有关更多详细信息,请参阅Eval 脚本简介)。
从那时起,Redis 用户对 Lua 脚本的采用一直在增加。脚本提供了一种有效且简单的方式,可以利用核心 Redis 操作和控制结构来构建服务器端工作流程。它们可以作为底层数据结构对应用程序原生代码的抽象。应用程序的一组 Lua 脚本实现其逻辑操作(例如,“添加用户”或“下单”脚本)。
由于脚本是 Redis 的一个流行功能,已经存在很长时间了,我们收集了很多关于它的反馈。我们发现大多数需求分为三个类别
这将我们带回到 Redis Functions。在 Redis 7.0 中,函数完全独立于应用程序。因此,函数是可执行的软件工件,是第一类数据库公民。Redis 服务器像管理用户数据一样管理函数,因此它们会持久化和复制以确保可用性。在运行时将函数加载到数据库不再是应用程序的责任,而成为可以计划和管理的管理维护任务。
函数驻留在服务器上下文中,使应用程序无需关注函数的实现。相反,应用程序依赖于函数签名作为其与嵌入式逻辑交互的 API,并且完全不知道正在使用的 Redis 命令和类型。这使得不同的应用程序可以共享函数。它还可以在不强制依赖应用程序的情况下进行函数的开发、测试和维护。
Redis Functions 的设计与引擎无关。尽管 Redis 7.0 仅支持用 Lua 5.1 编写的函数,但内部实现几乎已经准备好与其他的执行引擎对接。我们计划未来增加对更多类型的执行引擎的支持。
函数带来的另一个范式转变是库的使用。库可以由一个或多个注册函数以及任何额外的内部函数组成。注册函数是库的入口点和应用程序的契约式 API。另一方面,内部函数可以在库内部本地调用,以实现代码重用。
我们期望 Redis 7.0 中引入函数是将 Redis 可编程性提升到新阶段的重要一步。如果您已在应用程序中使用 Lua 脚本,迁移到使用函数是可选且简单的(有关更多信息,请参阅Redis Functions)。更好的是,随着我们向前发展,函数为改进 Redis 可编程性并进行创新提供了更好的基础。