亲爱的Programmer,当你读到这篇文章的时候,我已经升级到Redis7.2版本了,这不是突发奇想,而是精心策划。帮助你创建强大、快速且大规模执行的应用程序已有十多年之久了,有你的信赖,我很满足。从今以后,我不能再以原来的版本陪伴你了,取而代之的将是更好的我:Redis7.2。
Redis 7.2 是最具有深远影响的版本。它包含了一系列广泛的新特性,并在支持人工智能计划的功能方面进行了重大投入。 在所有这些增强的功能中,一个明显的主题贯穿其中:让开发人员更轻松地使用 Redis,让 Redis 运行得更快,让创新成果更轻松地实现。
不止是懂你的需求,我们有足够的创新能力满足你的需求
我们曾有一家大型金融服务客户。该公司在 Redis 上专门运行多个机器学习(Machine Learning, ML)工作负载,数据量达到数百TB,可实现 99.999%的可用性。企业正在寻找一种经过验证的、企业级的向量数据库,其应当具有 Active-Active 地理分布、多租户、基于标签的混合搜索、基于角色的访问、嵌入式对象(如 JSON)、文本搜索功能和索引别名等能力。我们在 Redis Enterprise 上内置了所有这些功能,并通过了实战验证。
大语言模型(Large Language Model, LLM)和生成式人工智能的广泛应用,正以惊人的速度改变计算机软件行业,而Redis一直在努力提供功能使这些应用变得更轻松。 我们一直在为全球顶尖客户(包括 OpenAI)提供支持,并致力于实现机器学习(ML)无缝且易用的体验,特别是现在的向量数据库领域。
Redis通过多种策略支持其数据库服务中的生成式AI工作任务,旨在提高效率、降低成本、增强可扩展性和性能。 Redis 的矢量数据库支持两种矢量索引类型: FLAT(暴力搜索)和 HNSW(近似搜索),以及三种常用的距离度量: 余弦距离、内积距离和欧氏距离。其他功能还包括范围查询、混合搜索(结合过滤器和语义搜索)、JSON 对象支持等。
有人问,Redis是如何帮助构建和部署 LLM 支持的应用程序的?
- 检索增强生成(Retrieval Augmented Generation,RAG)
在RAG 框架中,响应是使用预先训练好的 LLM 和客户自己的数据生成的。许多企业希望利用生成式人工智能的强大能力,而不是构建自己的模型或对现有模型进行微调。此外,他们也不愿意与商业 LLM共享自己的私有数据,而这正是 Redis Enterprise 发挥作用的地方。作为一个矢量数据库,它具有强大的混合语义搜索功能,可精确定位相关数据。此外,它还可以部署为外部的特定领域知识库。这确保了通用型LLM获得最相关和最新的上下文信息,从而提高结果质量。
- LLM 语义缓存:
Redis Enterprise 常被用作可扩展的缓存,用于存储以前回答过的用户问题和结果。Redis 还使用语义缓存来识别和检索与输入问题语义足够相似的缓存响应,从而显著提高缓存命中率。这大大减少了发送到 LLM 服务的请求和令牌数量,从而通过缩短生成响应的时间来提高性能并降低成本。
- 推荐系统:
LLM 可作为复杂的电子商务虚拟购物助手的支撑。Redis Enterprise 的上下文理解和语义搜索功能使应用程序能够理解客户的问题,提供个性化的产品推荐,甚至模拟实时对话交互。
- 文档搜索:
在企业需要分析大量文件的情况下,由 LLM 驱动的应用程序可作为强大的文件发现和检索工具。Redis Enterprise 的混合语义搜索功能使其能够精确定位相关信息,并从这些文档中生成新内容。
Redis已与最流行的应用程序开发框架集成,用于创建由LLM驱动的聊天机器人、代理和流水线。其中包括 LlamaIndex、Langchain、RelevanceAI、DocArray、MantiumAI 和 ChatGPT retrieval plugin。 此外,Redis还与英伟达在一些领先的人工智能项目上开展了密切合作,如英伟达™(NVIDIA®)的 AI 工作流(Merlin 和 Morpheus)、工具(Triton 和 RAPIDS),以及英伟达™(NVIDIA®)正在开发中的为提供更高的每秒查询次数(QPS)的先进索引技术 RAPIDS RAFT。
这些案例需要更高性能的搜索能力。 在 Redis Enterprise 7.2 中,我们推出了可扩展搜索功能的预览版。 它允许在集群间以最佳的分布式处理方式,运行高 QPS、低延迟的工作任务。与以前的 Redis Enterprise 搜索和查询引擎相比,它可将查询吞吐量提高多达 16 倍。
在上百个社区开发的客户端库中,哪个库支持最新的 Redis 功能?其安全和性能水平如何?
随着Redis 7.2的发布,我们为Redis客户端带来了全新的指导和支持。 我们与五个客户端库的社区维护者直接合作——Jedis(Java)、node-redis(NodeJS)、redis-py(Python)、NRedisStack(.Net)和Go-Redis(Go),以求在文档、用户界面、管理和安全性等方面保持一致性。我们还在Redis Stack 和 Redis Enterprise(云和软件)中支持 RESP3 协议。
1、更高水平的可编程性
在此版本中,我们还将实时数据的可编程性提升到了一个新的水平。触发器和函数的公开预览版带来了服务器端事件驱动引擎,以支持在数据库中执行 Typescript/JavaScript 代码。这项功能让开发人员可以直接在 Redis 上执行复杂的数据操作,确保在任何客户端应用程序中执行的一致性。
触发器和函数支持集群级别的跨分片读操作。这一功能在前几代 Redis 可编程引擎(如 Lua 和函数)中是不具备的。
触发器和函数的公开预览版
2、改进后的地理空间功能
地理空间功能也得到了改进。我们改进了 Redis Stack 中的多边形搜索,以方便搜索地理空间数据,查找地理区域内的信息。
例如,在一个查找墨西哥餐厅的应用程序中,地理空间信息是旧金山所有餐厅的索引位置数据。用户在数字地图上画出的多边形就是搜索的地理区域。Redis 只检索与所画多边形边界内餐馆相关的键。
应用多边形搜索查找墨西哥餐厅
3、Redis Sorted Set的性能:从30% 到 100%
我们还大幅提高了 Redis Sorted Set 这一数据结构的性能,这种数据结构通常用于创建游戏排行榜或其他用途。与 Redis Enterprise Cloud 6.2 相比,我们的改进能够获得30% 到 100% 的性能提升。
Redis Cloud 6.2 VS Redis Cloud 7.2
您现在可以使用 Redis 数据集成(RDI)工具。RDI 是一种可直接在 Redis Enterprise 上运行,并毫不费力地将任何数据集转换为 Redis 数据集的工具。数据集成(RDI)将源数据库中的更改直接流式传输到 Redis,并在其中进一步过滤、转换和映射为 JSON 或 Hash 等格式。 我们捕捉到了最常见的使用案例,并通过一个带有配置而非代码的界面提供给用户。
RDI 可以从各种来源(如 Oracle、Postgres 或 Cassandra)获取数据,并在功能上将其转化为实时数据。同样,当数据不再 "实时 "时,RDI 在无需添加更多代码和执行复杂集成的情况下,将 Redis Enterprise 中的下游变更同步到原有的数据记录系统中。
1、自动分层
并非每种情况下都需要您的应用程序以最高速度运行。在 Redis Enterprise 7.2 中,我们引入了自动分层(Auto Tiering,以前称为 Redis on Flash)和新的默认存储引擎 Speedb。 自动分层允许操作员使用固态硬盘(SSD)对Redis 数据库进行扩容,以突破物理 DRAM 的容量限制。这对于具有大型数据集的应用而言非常有意义,在这些应用中,频繁使用的数据保留在内存中,而使用频率较低的数据则保留在固态硬盘中,Redis Enterprise 可根据使用情况自动管理内存。
如此一来,数据存储变得更加容易、更加经济。自动分层在吞吐量和延迟方面实现了显著的性能提升:吞吐量翻了一番,同时延迟只有上一代存储引擎(RocksDB)的一半,且硬件设施的成本最多可降低高达 70%。
2、集群管理器(Cluster Manager,CM)用户界面
更新后的集群管理器(CM)用户界面可以提高日常管理工作的效率,其直观的界面具有与 Redis Enterprise Cloud 相同的功能,并且可减少学习曲线,最大限度地减少失误。通过使用新的 CM,只需简单点击两下鼠标,就能部署一个新的 Redis Enterprise 数据库。
集群管理器(CM)
3、容器化应用程序的操作员的福音
另一个好消息肯定会让容器化应用程序的操作员感到高兴,那就是支持 Active-Active 数据库部署的 Kubernetes Redis Enterprise Operator 已经全面上市。只需在 YAML 文件中写下几行声明,就能简化一些费时费力的任务,如创建地理分布式数据库,从 Active-Active 数据库中移除、添加和更新参与集群等。
许多开发人员喜欢在云端的 Redis 服务上进行构建,而不是将其下载到自己的机器上。我们还从许多客户那里了解到,他们在混合使用 Redis OSS、Redis Stack 和 Redis Enterprise 实例时,在处理这些具备不同发布日期的不同实例的新版本时,会颇具挑战。
Redis 7.2 是我们的首个统一 Redis 版本(Unified Redis Release),现已全面发布。我们将使开发人员更容易在不同的 Redis 发行版之间构建和移植代码。这对希望简化 Redis 足迹控制的运营商而言,是一大福音。架构师们也将享受到将其他数据存储与 Redis 集成所带来的自由。