Valkey:对开源的投资

valkey 成立已满一年,初衷是为开源社区保留一个高性能的键值存储系统,防止其被商业公司垄断或受制于严格的许可条款。该项目获得了来自 aws、google cloud、ericsson、oracle、alibaba、huawei、tencent、percona、aiven、heroku、verizon、chainguard 和 canonical 等众多企业的积极参与与支持,彰显了开源生态中“免费”表象背后,实则依赖大量人力、时间与资金投入的现实。

Valkey:对开源的投资

开发者主导,Linux 基金会护航

Valkey 诞生于 2024 年 3 月 28 日,如今已成为一款支持缓存、消息队列等多种用途的开源高性能键值数据库,亦可作为主数据库使用。项目由成立于 2000 年的中立组织 Linux 基金会托管,该基金会致力于帮助开发者和技术团队更好地管理与扩展开源项目。Valkey 实行开放治理机制,目标是推动社区贡献增长和用户广泛采用。

周年回顾:快速发展的一年

在短短十二个月内,Valkey 推出了两个重要版本,参与企业从最初的 22 家跃升至 47 家,共同制定技术方向并推动创新。用户群体持续扩大,社区展现出强大的活力与改进决心,确保所有使用者都能从中受益。

Valkey 新特性及应用实践

JSON 与 Bloom 过滤器:应对真实挑战

新增的 JSON 和 Bloom 过滤器两种数据类型,显著增强了开发者在分布式架构中对速度与结构化数据处理的能力。它们有效简化了应用逻辑,提升了边缘计算场景下的效率。Valkey 联合维护者 Madelyn Olson 表示:“我们引入 JSON 和 Bloom 过滤器,是为了给开发者提供真正实用的工具,解决现实世界中的复杂问题。”

JSON 支持允许直接在 Valkey 中操作结构化数据,无需额外序列化步骤或中间层。Olson 强调:“现在可以直接在数据库内处理嵌套对象,开发更便捷,减少了大量粘合代码。”

Bloom 过滤器则提供了一种高效且内存友好的存在性判断方式。她补充道:“当你需要快速确认某个元素是否存在,比如用于反欺诈检测或避免高并发下对后端服务的无效请求时,Bloom 过滤器非常适用。”

她还表示:“我很期待看到社区如何利用这些新能力创造出令人惊喜的应用。”

Valkey Search:赋能 AI 场景的极速检索

Google 贡献了 Valkey Search 模块,支持向量相似度搜索,具备毫秒级响应延迟,可处理数十亿级向量规模,并保持超过 99% 的召回率。

开发者可通过 HNSW 实现近似最近邻(ANN)搜索,也可执行精确 KNN 查询,索引来源支持 Hash 或 Valkey-JSON 类型。虽然当前重点在于向量搜索,未来计划逐步演进为支持全文检索和多样化索引策略的完整搜索引擎

性能、稳定与安全保障

过去一年间,Ericsson、Oracle、Percona 等公司的工程师持续投入,使 Valkey 在性能、安全性和企业级稳定性方面大幅提升。以下关键改进展示了项目在满足大规模生产需求的同时,兼顾易用性的演进路径。

多线程优化升级

近期系统底层重构优化了多线程任务调度,降低锁争用,更充分地发挥多核 CPU 性能。在高并发负载下显著提升吞吐量,使其更适合大型生产部署。作为核心贡献者,Ericsson 已切实感受到性能增强带来的业务价值。

Ericsson 软件技术专家兼 Valkey 维护者 Viktor Söderqvist 指出:“核心效率的提升,是 Valkey 日益适用于生产环境的关键。”他提到,“哈希表的重新设计结合 SIMD 技术,以及多线程处理和批量内存预取的持续优化,大幅提高了 CPU 与内存资源的利用率和访问速度。”

SIMD 加速的哈希表重构

通过对核心哈希表进行重构并引入 SIMD 指令集,实现多个操作的并行处理,极大加快了键值查找效率。此类底层优化显著改善了对延迟敏感的应用响应表现。

批量内存预取机制

新加入的批量内存预取功能可提前加载常用数据,减少缓存缺失,保障在高负载或顺序访问模式下的性能平稳流畅。

LDAP 认证集成

LDAP 集成实现了集中式身份验证与权限控制,让 Valkey 更容易融入企业现有的认证体系。这一功能解决了合规性强、安全性要求高的组织在部署过程中的常见痛点。

Percona 联合创始人 Vadim Tkachenko 表示:“许多客户早已通过 LDAP 管理基础设施权限,将它接入 Valkey 是顺理成章的事。这不仅降低了使用门槛,还支持审计追踪、基于组的权限分配,并能无缝对接现有系统。”

Rust 编写的模块 SDK

Oracle 贡献了基于 Rust 语言的模块开发工具包,旨在提升扩展组件的安全性与运行效率。Rust 提供出色的内存安全与并发保障,有助于构建更可靠、易于维护的插件系统,尤其适合高负载生产环境。

开源成功的隐性成本

对开源项目的实际投资,包括雇佣专职开发者参与贡献,揭示了一个重要事实:无论是大型科技公司还是小型创业团队,唯有协作才能推动技术创新。这意味着必须投入真实资源——所谓“免费”的开源,背后凝聚的是开发者、文档撰写者、治理委员会和整个社区的共同努力。

Valkey 最新进展

2025 年 8 月 15 日,Valkey 发布了 9.0 版本的首个候选版(RC1)。此测试版本带来了原子槽迁移、哈希字段级过期、集群模式下的编号数据库等重磅功能,同时包含多项性能调优与缺陷修复。后续还将推出更多候选版本,预计于 2025 年秋季正式发布 9.0 稳定版。

更多详情请查阅官方博客。

源码地址:点击下载

以上就是Valkey:对开源的投资的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/93827.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月19日 08:18:30
下一篇 2025年11月19日 08:37:51

相关推荐

  • HTML输入框粘贴内容自动提取首词教程

    本教程旨在详细指导如何在用户向HTML输入框粘贴文本时,通过JavaScript(结合jQuery)自动截取并仅保留粘贴内容中的第一个词。我们将重点介绍如何利用paste事件监听、安全地获取剪贴板数据以及高效处理字符串以实现这一功能,从而确保输入框内容始终符合预设的单词格式要求,提升数据输入的规范性…

    2025年12月10日
    000
  • 动态表单输入框的JavaScript实现教程

    本教程详细阐述了如何利用JavaScript动态地向HTML表单中添加新的文本输入框。通过监听按钮点击事件,结合DOM操作(如创建元素、设置属性和插入DOM树),我们能够实现无限添加输入字段的功能,并确保每个新增字段都拥有唯一的标识符,为后端数据处理提供便利。 动态添加输入框的核心原理 在网页开发中…

    2025年12月10日
    000
  • 动态生成表单输入框:JavaScript实现按钮点击添加功能

    本文详细介绍了如何使用JavaScript实现表单输入框的动态添加功能。通过监听按钮点击事件,文章演示了如何利用DOM操作(如document.createElement和appendChild)在网页表单中实时创建并插入新的文本输入框,确保每个新增输入框都具有唯一的标识和可配置的属性。教程提供了清…

    2025年12月10日
    000
  • 如何在表单中动态添加文本输入框

    本文详细介绍了如何利用JavaScript实现网页表单中动态添加文本输入框的功能。通过监听按钮点击事件,结合DOM操作(如document.createElement和element.appendChild),可以灵活地在指定位置创建并插入新的输入字段,并确保每个字段具有唯一的标识,从而提升用户交互…

    2025年12月10日
    000
  • JavaScript实现动态添加表单输入框:点击按钮自动生成

    本教程详细介绍了如何利用JavaScript在网页中动态创建表单输入框。通过监听按钮点击事件,结合document.createElement()和appendChild()等DOM操作方法,实现按需生成新的文本输入字段,并确保每个字段具有唯一的标识符,从而提升用户交互体验和表单的灵活性。 在现代w…

    2025年12月10日
    000
  • 动态生成表单输入框:使用JavaScript实现按需添加字段

    本教程详细介绍了如何使用JavaScript动态地在HTML表单中添加新的输入框。通过监听按钮点击事件,利用DOM操作创建并插入新的元素,并确保每个新增字段拥有唯一的名称以便后续数据处理,从而实现灵活的用户交互界面。 引言:动态表单的必要性 在网页开发中,我们经常会遇到需要用户输入可变数量信息的情况…

    2025年12月10日
    000
  • 解决 Laravel 404 错误:视图无法显示与缓存优化

    当Laravel开发者遇到404错误,即使路由和视图配置正确,问题往往出在Laravel的缓存机制。本文将详细解释为何会出现此问题,并提供通过运行php artisan optimize命令来清除和优化缓存的解决方案,确保视图能够正确加载,避免不必要的404错误,从而提升开发效率和应用性能。 1. …

    2025年12月10日
    000
  • 解决 Laravel 视图 404 错误:深入理解缓存优化

    本文旨在解决 Laravel 开发中常见的视图 404 错误,即使路由、控制器和视图文件看似配置正确,仍可能因 Laravel 内部缓存机制导致该问题。核心解决方案是使用 php artisan optimize 命令清除并重新编译框架缓存,以确保系统正确加载更新后的文件和类,从而消除“未找到”错误…

    2025年12月10日
    000
  • Laravel 视图 404 错误排查:缓存优化与解决方案

    当您在 Laravel 8 中配置了正确的路由、控制器和视图,却仍然遇到 404 Not Found 错误时,这通常是由于 Laravel 的内部缓存机制导致。本文将详细解释这一现象,并提供通过运行 php artisan optimize 命令来清除并重新编译应用缓存的有效解决方案,确保您的视图能…

    2025年12月10日
    000
  • PHP PDO日期查询陷阱与优化:正确处理日期和SQL逻辑操作符

    本教程旨在解决PHP PDO中日期比较不准确的问题,特别是当使用DateTime对象和SQL逻辑操作符时。文章将详细阐述如何正确初始化DateTime对象以获取当前日期,并强调在SQL查询中使用AND而非&&的最佳实践,确保数据检索的准确性和代码的健壮性。 在开发数据库驱动的php应…

    2025年12月10日
    000
  • PDO中日期时间查询与时区处理的实践指南

    本文旨在解决PDO数据库查询中日期时间匹配不准确的问题,特别是当涉及到特定时区和SQL逻辑运算符时。核心内容包括:正确使用DateTime类获取指定时区的当前日期,避免date()函数可能引入的隐式时区问题;以及强调在SQL查询中应使用标准的AND逻辑运算符而非&&,以确保查询的兼容…

    2025年12月10日
    000
  • 配置CodeIgniter全局404页面重定向

    本文将详细介绍如何在CodeIgniter框架中配置自定义的404错误页面重定向机制。通过修改路由配置和实现一个专门的控制器方法,我们可以确保当用户访问不存在的URL或控制器方法时,系统能够自动将其重定向到指定的页面,例如网站的根目录,从而提升用户体验并优化网站的错误处理流程。 理解CodeIgni…

    2025年12月10日
    000
  • Laravel Query Builder 中使用 LPAD 函数

    本文介绍了如何在 Laravel 的 Query Builder 中使用 LPAD 函数,通过 selectRaw 方法,可以直接执行包含 LPAD 的原生 SQL 语句,实现对字段的左侧填充。 在 Laravel 开发中,我们经常需要使用 Query Builder 来构建数据库查询。有时候,我们…

    2025年12月10日
    000
  • WordPress开发:基于作者元数据条件显示/隐藏社交图标

    本教程详细介绍了如何在WordPress作者页面中,根据作者元数据(如社交媒体链接)的存在与否,动态地显示或隐藏相应的社交媒体图标。通过利用WordPress的wp_head钩子、get_the_author_meta函数以及条件CSS注入,本方法提供了一种灵活且高效的解决方案,确保只有当作者提供了…

    2025年12月10日
    000
  • Laravel Query Builder中使用LPAD函数

    本文介绍了如何在 Laravel 的 Query Builder 中使用 LPAD 函数,实现对数据库字段进行左侧填充的操作。通过 selectRaw 方法,可以直接在查询语句中使用原生 SQL 函数,灵活地处理数据格式。 在 Laravel 开发中,我们经常需要使用 Query Builder 来…

    2025年12月10日
    000
  • PHP DocBlock 中的 @template 注解详解

    @template 注解是 PHP DocBlock 中用于模拟泛型的标签,虽然 PHP 本身不支持原生泛型,但通过 @template 可以在文档中声明类型参数,从而更精确地描述参数和返回值的类型关系,提高代码的可读性和静态分析工具的准确性。本文将深入探讨 @template 的含义、用法以及在实…

    2025年12月10日
    000
  • PHP Doc Blocks 中的 @template 注解:深入理解泛型模拟

    @template 注解用于在 PHP Doc Blocks 中模拟泛型,允许开发者在文档中描述参数或返回值的类型,即使这些类型在类实例化或方法调用之前是未知的。它主要用于提高代码的可读性和静态分析工具的准确性,虽然PHP本身并不直接支持泛型。 在 PHP 中,虽然语言本身并不直接支持泛型,但我们可…

    2025年12月10日
    000
  • PHP DocBlock 中的 @template 注解:深入理解泛型模拟

    @template 注解在 PHP DocBlock 中用于模拟泛型编程,允许开发者在文档中声明类型参数,从而更精确地描述类或方法的参数和返回值类型,提高代码的可读性和静态分析工具的准确性。虽然 PHP 本身不支持原生泛型,但通过 @template 注解,可以实现类似的功能,为代码添加类型信息。 …

    2025年12月10日
    000
  • 使用 Glob 模式匹配 ZIP 文件内容

    本文介绍了如何在 PHP 中使用 Glob 模式匹配 ZIP 文件的内容。由于 PHP 内置的 glob() 函数和 zip:// 流封装器均不支持直接对 ZIP 文件内容进行 Glob 匹配,本文提供了一种替代方案,利用 ZipArchive 类和 fnmatch() 函数实现类似的功能,方便用户…

    2025年12月10日
    000
  • PHP中使用Glob模式匹配ZIP文件内容

    本文介绍了在PHP中如何使用Glob模式匹配ZIP文件内容的方法。由于PHP内置的glob()函数不支持流封装器,且zip://流封装器无法列出目录内容,因此直接使用glob()函数匹配ZIP文件内容不可行。本文提供了一种替代方案,通过ZipArchive类读取ZIP文件内容,并结合fnmatch(…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信