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

Redis之父为Redis新增Array原生数据类型,含18个新命令及浏览器端体验工具
Redis之父antirez提交PR,为Redis新增Array原生数据类型,包含18个AR前缀命令,涵盖基础读写、正则搜索(ARGREP)、环形缓冲(ARRING)等功能,填补了Redis在O(1)索引随机访问上的空白。Simon Willison借助Claude Code构建了基于WebAssembly的浏览器端Playground,实现零安装体验。两者均采用AI辅助开发,展示了AI编程工具在系统级工程中的成熟度。
概述
Redis 之父 Salvatore Sanfilippo(antirez)近日向 Redis 提交了一个重磅 PR,为 Redis 新增了一种原生数据类型——Array(数组)。另一边,Simon Willison 利用 Claude Code 构建了一个基于 WebAssembly 的浏览器端交互式 Playground,让开发者无需安装任何环境即可体验这套全新的命令集。
这一变化不仅丰富了 Redis 的数据模型,其开发过程本身也是 AI 辅助编程的一个典型案例。
Redis 数据模型演进与 Array 类型的定位
Redis 自 2009 年发布以来,其核心竞争力之一就是丰富的数据结构支持。从最初的 String、List、Set、Hash,到后来加入的 Sorted Set(有序集合,基于跳表实现)、HyperLogLog(基数估计)、Bitmap、Stream(消息流,Redis 5.0 引入),每一次数据类型的新增都代表着 Redis 应用场景的重大扩展。
Array 类型的引入延续了这一传统,填补了 Redis 在固定索引随机访问数组操作上的空白——虽然 List 类型支持按索引访问,但其底层基于 quicklist(ziplist + 双向链表的混合结构),在随机访问性能和语义表达上与真正的数组存在差异。Array 类型提供了 O(1) 的索引访问语义,更贴近传统编程语言中数组的行为。
值得一提的是,Salvatore Sanfilippo(网名 antirez)是意大利程序员,2009 年创建了 Redis 项目。2020 年他宣布卸任 Redis 维护者角色,将项目交给 Redis Labs(现 Redis Inc.)的团队。2024 年 Redis 将许可证从 BSD 改为 RSALv2/SSPLv1 双许可后,社区出现了 Valkey 等分支。antirez 此次直接向 Redis 提交 PR,标志着他在一定程度上重新参与了 Redis 的核心开发,这对社区而言是一个重要信号。
Redis Array类型:18个全新命令一览
此次 PR 一口气引入了 18 个以 AR 为前缀的新命令,覆盖了数组操作的方方面面:
- 基础读写:
ARSET、ARGET、ARMSET、ARMGET— 单个或批量设置/获取数组元素 - 范围操作:
ARGETRANGE、ARDELRANGE— 按范围读取或删除元素 - 插入与删除:
ARINSERT、ARDEL— 在指定位置插入或删除元素 - 查询与遍历:
ARSCAN、ARSEEK、ARNEXT、ARGREP— 扫描、定位、迭代和模式匹配 - 元信息:
ARLEN、ARINFO、ARCOUNT— 获取长度、详细信息和计数 - 特殊操作:
AROP(运算操作)、ARRING(环形缓冲)、ARLASTITEMS(获取末尾元素)
这套命令集的设计显然经过深思熟虑,从基础 CRUD 到高级查询一应俱全,体现了 Redis 一贯的「命令即接口」设计哲学。Redis 的 API 设计遵循一个独特的原则:每个操作都是一个独立的、语义明确的命令,而非通过查询语言(如 SQL)来表达。这种设计使得每个命令都可以被精确地分析其时间复杂度、进行权限控制(通过 ACL 系统精确到命令级别)、以及在集群模式下确定路由策略。18 个 AR 前缀命令的设计延续了这一传统——每个命令职责单一,组合使用时又能覆盖复杂场景,这与 Unix 哲学中「做好一件事」的理念一脉相承。
ARGREP命令:Redis服务端正则搜索的突破
在所有新命令中,ARGREP 无疑是最引人注目的。它允许用户直接在 Redis 服务端对数组中的值执行 grep 式的正则匹配搜索。
为了实现这一功能,Redis 内部新引入(vendor)了 TRE 正则表达式库。TRE 是由芬兰开发者 Ville Laurikari 创建的一个符合 POSIX 1003.2 标准的正则表达式库,其最大特色是支持近似匹配(approximate matching),即允许指定编辑距离(插入、删除、替换操作的最大次数)来进行模糊搜索。相比 PCRE 等重量级正则库,TRE 的代码体积小、无外部依赖,非常适合嵌入到 Redis 这类对性能和体积敏感的系统中。Redis 此前在 KEYS 和 SCAN 命令中使用的是简单的 glob 风格模式匹配(仅支持 *、?、[] 等通配符),ARGREP 引入完整正则支持是一个质的飞跃。
ARGREP 支持丰富的选项组合:
- MATCH — 指定匹配模式
- AND / OR — 多条件逻辑组合
- LIMIT — 限制返回结果数量
- WITHVALUES — 返回结果时附带值
- NOCASE — 大小写不敏感匹配
这意味着 Redis 不再仅仅是一个键值存储,它开始具备在数据结构内部进行复杂查询的能力。对于需要在内存中快速搜索文本数据的场景(如日志缓冲、消息队列内容过滤、实时告警规则匹配等),这将是一个极具价值的特性。传统做法需要将数据从 Redis 拉取到应用层再进行过滤,而 ARGREP 将计算下推到存储层,大幅减少了网络传输开销和应用层的处理负担。
ARRING命令:原生环形缓冲的实用价值
ARRING 命令实现的环形缓冲(Ring Buffer)是一种固定大小的数据结构,当写入超过容量时,新数据会覆盖最旧的数据。这种结构在系统编程中极为常见:Linux 内核的 dmesg 日志、网络设备的数据包缓冲、应用程序的最近 N 条操作记录等都使用环形缓冲。
在 Redis 中原生支持这一语义,意味着开发者无需在应用层维护 LTRIM + RPUSH 的组合逻辑来模拟固定长度队列,直接使用 ARRING 即可实现原子性的环形写入。这在监控数据采集(保留最近 1000 个采样点)、滑动窗口计算(最近 N 次请求的响应时间)、以及审计日志(保留最近 N 条操作记录)等场景中尤为实用。原子性保证意味着在高并发写入时无需额外的分布式锁,简化了应用架构。
浏览器端Playground:基于WebAssembly零安装体验Redis Array
Simon Willison 做了一件非常有意义的事——他让 Claude Code 将 Redis 的一个子集编译为 WebAssembly,并构建了一个交互式 Playground,完全运行在浏览器中。
WebAssembly(WASM)是一种二进制指令格式,允许将 C/C++/Rust 等语言编写的程序编译后在浏览器中以接近原生的速度运行。将 Redis 子集编译为 WASM 意味着整个 Redis 服务器的核心逻辑可以在浏览器沙箱中执行,无需网络连接或服务器部署。这种模式近年来被广泛用于开发者工具——如 SQLite 的 WASM 版本让用户在浏览器中直接运行 SQL 查询,PostgreSQL 的 PGlite 项目也采用了类似思路。Emscripten 是最常用的 C/C++ 到 WASM 的编译工具链,它提供了 POSIX API 的模拟层,使得像 Redis 这样依赖系统调用的程序也能在浏览器环境中运行。
这个 Playground 提供了可视化的命令构建界面:
- 左侧边栏列出所有可用命令
- 主面板提供参数配置表单,包括下拉选择、复选框等交互控件
- 底部实时显示构建出的完整命令字符串
- 点击运行即可看到返回结果
这种「零安装体验」的方式极大地降低了开发者尝试新特性的门槛。由于 Array 类型目前仅存在于开发分支中,这个 Playground 几乎是普通开发者能接触到这些命令的最便捷途径。
AI辅助开发:从Redis核心代码到工具链构建
这个项目中 AI 的参与贯穿了两个层面:
第一层:Redis Array 类型本身的开发。 Salvatore 在其博客文章 Redis array type: short story of a long development 中详细记录了 AI 辅助编写 C 代码的过程。作为 Redis 的创造者,他对 AI 在系统级编程中的实际效用有着第一手的观察和思考。系统级 C 代码对正确性要求极高——内存管理、边界条件、并发安全等问题稍有不慎就会导致崩溃或数据损坏。AI 在这类场景中的价值不仅在于生成代码,更在于快速原型验证和边界情况的探索。
第二层:Playground 工具的构建。 Simon Willison 使用 Claude Code for web 来完成 WASM 编译和前端交互界面的开发。从 PR #277 可以看到整个构建过程。将一个复杂的 C 项目交叉编译为 WASM 涉及大量的构建系统配置、API 适配和调试工作,AI 工具在这类「胶水代码」和配置密集型任务中展现了显著的效率提升。
两位在各自领域极具影响力的开发者不约而同地选择了 AI 辅助开发,这本身就说明了 AI 编程工具在实际工程中的成熟度正在快速提升。
展望:Redis Array何时正式发布
Redis Array 类型目前还处于 PR 阶段,距离正式发布可能还需要经历社区审查和迭代。但从设计的完整性来看——18 个命令、内置正则搜索、环形缓冲支持——这显然不是一个实验性的玩具,而是一个经过深入思考的生产级特性。
如果最终合入主线,Array 类型将成为 Redis 继 String、List、Set、Hash、Sorted Set、Stream 之后的又一核心数据结构,进一步巩固 Redis 作为多模型数据库的定位。结合 Redis 近年来在搜索(RediSearch)、JSON(RedisJSON)、图(RedisGraph,已停止维护)、时序(RedisTimeSeries)等模块化扩展上的布局,Array 类型的加入使得 Redis 核心引擎本身的表达能力更加丰富,减少了对外部模块的依赖。
核心要点
- Redis之父Salvatore Sanfilippo提交PR,为Redis新增Array原生数据类型,包含18个全新命令
- ARGREP命令支持服务端正则搜索,内置TRE正则库,支持多条件组合和大小写不敏感匹配
- Simon Willison利用Claude Code构建了基于WebAssembly的浏览器端交互Playground,零安装即可体验
- Redis核心代码和Playground工具均采用AI辅助开发,展示了AI编程工具在系统级编程中的实用性
- Array类型设计完整,若合入主线将成为Redis继String、List等之后的又一核心数据结构
相关推荐
科技前沿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编程助手竞争格局中的战略意义。