Redis新增Array数据类型:18个命令详解与浏览器WASM实验场体验

Redis创始人为Redis新增原生Array数据类型,含18个专用命令及服务端正则搜索能力。
Redis创始人antirez提交PR,为Redis新增原生Array数据类型,配备18个以AR为前缀的专用命令,涵盖CRUD、环形缓冲区、正则搜索(ARGREP)等功能,弥补了现有List随机访问性能差和Sorted Set需要score字段的不足。ARGREP内置TRE正则引擎,将数据过滤下沉到存储层。Simon Willison借助Claude Code构建了基于WebAssembly的浏览器端实验场,供开发者零安装体验。两者的开发均大量使用AI辅助。
Redis 迎来全新数据类型:Array
Redis 创始人 Salvatore Sanfilippo(antirez)近日向 Redis 仓库提交了一个重磅 PR,为 Redis 新增了一种原生数据类型——Array(数组)。这不是对现有 List 类型的简单包装,而是一套全新的、功能丰富的数据结构,配备了多达 18 个专用命令。另一边,Simon Willison 借助 Claude Code 构建了一个基于 WebAssembly 的浏览器端交互式实验场,让开发者无需安装任何环境即可上手体验。
Salvatore Sanfilippo(网名 antirez)是意大利开发者,于 2009 年创建了 Redis 项目。Redis 最初是他为解决实时 Web 分析中的性能瓶颈而开发的副项目,后来迅速成长为全球最流行的内存数据存储系统之一。2020 年,antirez 宣布从 Redis 的日常维护中退出,将项目交给 Redis Labs(后更名为 Redis Ltd.)的核心团队。2024 年 Redis 将开源许可证从 BSD 变更为双许可(RSALv2 + SSPLv1),引发社区广泛争议并催生了 Valkey 等分支项目。antirez 此次重新向 Redis 提交代码,标志着他在一定程度上重新参与了 Redis 的核心开发,这本身就是社区关注的焦点事件。
Redis Array 的 18 个新命令一览
新的 Array 类型引入了一整套以 AR 为前缀的命令集:
- 基础操作:
ARSET、ARGET、ARDEL、ARLEN、ARINFO - 批量操作:
ARMGET、ARMSET、ARGETRANGE、ARDELRANGE - 插入与追加:
ARINSERT、ARRING(环形缓冲区模式) - 遍历与搜索:
ARSCAN、ARSEEK、ARNEXT、ARGREP、ARCOUNT - 计算操作:
AROP(对数组元素执行运算) - 尾部查询:
ARLASTITEMS
这套命令的设计覆盖了从简单的 CRUD 到复杂的模式匹配搜索,Array 类型的定位远不止于"有序集合的替代品"。
要理解 Array 类型的意义,需要先了解 Redis 现有的数据类型格局。Redis 目前支持 String、List、Hash、Set、Sorted Set、Stream、HyperLogLog、Bitmap、Bitfield 等核心数据类型。其中 List 基于 quicklist(ziplist + 双向链表的混合结构)实现,虽然在两端操作(LPUSH/RPUSH/LPOP/RPOP)上表现优异,但按索引随机访问(LINDEX)的时间复杂度为 O(N),在大规模数据下性能不理想。Sorted Set 基于跳表(Skip List)和哈希表的组合实现,虽然支持有序遍历和范围查询,但每个元素必须关联一个浮点数 score,增加了使用上的认知负担。新的 Array 类型正是为了弥补这些结构在随机访问和灵活查询方面的不足。
其中 ARRING 命令实现的环形缓冲区(Ring Buffer)值得特别说明。环形缓冲区是计算机科学中的经典数据结构,它使用固定大小的数组,当写入位置到达末尾时自动回绕到开头,覆盖最旧的数据。这种结构在日志记录、时间序列数据采集、网络数据包缓冲等场景中极为常见。在 Redis 语境下,ARRING 意味着开发者可以创建一个固定容量的数组,持续追加新元素而无需手动清理旧数据——Redis 会自动维护容量上限并淘汰最早的条目。这在监控指标收集、最近 N 条操作记录等场景中非常实用,此前实现类似功能需要组合使用 LPUSH + LTRIM 两条命令。
ARGREP:Redis 服务端正则搜索的突破
在所有新命令中,ARGREP 无疑是最值得关注的。它允许用户直接在 Redis 服务端对数组中的值执行 grep 式的正则表达式匹配。
为了实现这一功能,Redis 内部引入了 TRE 正则表达式库作为 vendor 依赖。TRE 是由芬兰开发者 Ville Laurikari 创建的 POSIX 兼容正则表达式库,其最大特色是支持近似匹配(approximate matching)——即允许在匹配过程中容忍一定数量的插入、删除和替换操作,返回与模式"足够接近"的结果。这种能力在传统正则引擎(如 PCRE、RE2)中并不常见。TRE 采用确定性有限自动机(DFA)的变体来实现匹配,避免了回溯型引擎(如 PCRE)在某些恶意模式下可能出现的指数级时间复杂度(ReDoS 攻击),这对于嵌入数据库内核的场景尤为重要——服务端正则执行必须具备可预测的性能特征,否则一条恶意查询就可能阻塞整个 Redis 实例。这意味着 ARGREP 未来可能具备模糊搜索的能力。
ARGREP 支持多种选项组合:
MATCH:指定匹配模式AND/OR:多条件逻辑组合LIMIT:限制返回结果数量WITHVALUES:返回匹配项的值NOCASE:不区分大小写
这实质上将一部分原本需要在应用层完成的数据过滤逻辑下沉到了存储层,对于需要在大量数组元素中快速检索的场景,性能提升潜力相当可观。传统做法是将所有数据拉取到客户端再进行过滤,这不仅浪费网络带宽,还增加了应用服务器的 CPU 和内存压力。ARGREP 将过滤逻辑在数据所在的位置直接执行,遵循了"计算靠近数据"的分布式系统设计原则。
浏览器内的 WebAssembly 实验场:零安装体验 Redis Array
Simon Willison 利用 Claude Code(Web 版)构建了一个 Redis Array Playground,将 Redis 的一个子集编译为 WebAssembly,直接在浏览器中运行。
WebAssembly(WASM)是一种低级字节码格式,最初由 W3C 标准化,旨在让 C/C++/Rust 等语言编写的程序能够在浏览器中以接近原生的速度运行。近年来,将服务端工具编译为 WASM 在浏览器中运行已成为一种显著趋势:SQLite 官方推出了 sql.js 和 SQLite WASM 版本,PostgreSQL 社区推出了 PGlite,甚至 Python 解释器也通过 Pyodide 项目实现了浏览器端运行。这种模式的核心优势在于消除了环境配置的摩擦——用户无需安装数据库、配置网络或管理进程,打开网页即可获得完整的交互体验。
这个实验场提供了可视化的命令构建界面:左侧边栏列出所有可用命令,主面板提供参数配置区域(包括下拉菜单、复选框等交互控件),底部实时显示生成的完整命令和执行结果。开发者可以零成本地探索每个命令的行为,理解参数组合的效果。
这种"将数据库编译到浏览器"的做法本身就是一个值得关注的技术趋势——WebAssembly 正在让越来越多原本需要服务端环境的工具变得触手可及。对于开发者教育、API 探索和快速原型验证而言,这种零安装体验极大地降低了技术门槛。
AI 辅助开发的真实案例
Salvatore 在其博客文章 Redis array type: short story of a long development 中详细记录了 Array 类型的 AI 辅助开发过程。作为 Redis 的创始人,他对 AI 编程工具的态度和使用方式具有很高的参考价值。
而 Simon Willison 构建 Playground 的过程同样依赖 AI——他通过 Claude Code 的 Web 版本完成了整个交互式界面的开发。Claude Code 是 Anthropic 推出的 AI 编程工具,支持终端命令行和 Web 两种使用模式。与 GitHub Copilot 侧重于行级代码补全不同,Claude Code 更擅长理解完整项目上下文并执行跨文件的复杂开发任务,包括架构设计、代码重构和端到端功能实现。Simon Willison 使用的是 Claude Code 的 Web 版本,这意味着他可以通过自然语言对话驱动整个 Playground 的前端界面开发——从 HTML 结构、CSS 样式到 JavaScript 交互逻辑和 WASM 集成,均由 AI 协助完成。
从 Redis 核心数据结构的实现到配套工具的构建,AI 在这个项目中扮演了贯穿始终的角色。值得注意的是,antirez 在博客中强调 AI 更多是加速实现已有设计思路,而非替代架构决策——这反映了当前 AI 辅助编程的一个重要共识:AI 擅长将明确的意图转化为代码,但系统级的设计判断仍然依赖人类工程师的经验和直觉。
Array 类型对 Redis 生态的影响
Array 类型的加入填补了 Redis 数据模型中的一个空白。现有的 List 类型基于链表实现,适合队列场景但随机访问性能较差;Sorted Set 虽然有序但需要 score 字段。Array 类型提供了真正的索引式随机访问能力,加上内置的正则搜索,使 Redis 在"内存数据库"的方向上又迈进了一步。
从更宏观的视角来看,Array 类型的引入也反映了 Redis 从"缓存层"向"主数据存储"演进的长期趋势。早期 Redis 主要被用作 MySQL/PostgreSQL 前面的缓存加速层,但随着 Redis Streams(消息队列)、RedisJSON(文档存储)、RediSearch(全文搜索)等模块的推出,Redis 正在逐步具备独立承担更多数据处理职责的能力。Array 类型配合 ARGREP 的服务端搜索能力,进一步缩小了 Redis 与传统数据库在查询灵活性上的差距。
目前该实现仍在分支阶段,尚未合并到主线。但考虑到提交者是 antirez 本人,这一特性进入正式版本的可能性很高。建议关注 Redis 的开发者提前通过 Playground 熟悉这套新的命令体系。
核心要点
- Redis 创始人 Salvatore Sanfilippo 提交 PR,为 Redis 新增原生 Array 数据类型,包含 18 个专用命令
- ARGREP 命令支持服务端正则搜索,内置 TRE 正则引擎,可实现多条件组合的模式匹配
- Simon Willison 借助 Claude Code 构建了基于 WASM 的浏览器端交互实验场,无需安装即可体验
- Array 类型和 Playground 的开发过程均大量使用 AI 辅助,是 AI 编程的典型实践案例
- Array 类型填补了 Redis 在索引式随机访问和内置搜索方面的数据模型空白
相关推荐
科技前沿GitHub Agent HQ发布:AI编程工具进入平台化竞争时代
GitHub Universe大会发布Agent HQ平台,统一管理编码Agent,Copilot升级支持多模型集成。同期OpenAI完成重组,Anthropic新模型测试,NVIDIA开源系列AI模型,AI编程工具格局加速整合。
科技前沿Gemini 3.5 Flash在GDPval基准上实现巨大飞跃
Google Gemini 3.5 Flash在GDPval基准测试中超越Gemini 3.1 Pro,轻量级Flash模型借助后训练技术逼近前沿水平,重新定义性能与成本的平衡点,为AI应用开发者带来重大利好。
科技前沿Google Gemini Antigravity周配额三倍提升,AI编程不再受限
Google Gemini团队再次将Antigravity周配额提升至三倍,继日配额提升后再次加码。本文解析此次配额调整对开发者的实际影响,以及在AI编程助手竞争格局中的战略意义。