Redis 8.8 新特性实操笔记:原生数组、INCREX 限流、XNACK 流处理
Redis 8.8 发布与落地 —— 新结构 / 限流 / 流处理 / 上线踩坑先说结论省得滑到底如果你现在正用Lua 脚本做限流、用List 模拟滑动窗口、或对流消息的失败处理有实时性要求这版能直接少写代码。其余是性能和小增强按需取。生产环境请用8.8.1——8.8.0 有多个 RESTORE 相关的远程代码执行漏洞已在 8.8.1 修掉。背景从 2009 到 8.8Redis 从 2009 年发布起就用五大基础类型String、List、Hash、Set、Sorted Set。这么多年一直有一类需求没被原生覆盖——按数字下标快速存取一串字符串。想要这个能力以前只能三选一用 List 模拟、把数据塞进 JSON、或者自己写 Lua。三种都用着别扭。2025 年的 8.0 是个节点开源协议改回AGPLv3JSON、时序、向量这些模块能力并进核心。之后从 8.0 到 8.8 迭代明显加快——8.2 简化 Stream 多消费组、8.4 让消费者更易读新增与空闲消息、8.6 加幂等生产。8.8 干的事比较实在把几个最常用的模式做成了原生命令不用再靠 Lua 和客户端逻辑拼。下面按新结构、限流、流消息、周边增强、性能与落地几块讲命令都给可直接在 redis-cli 里敲的版本文末附一份上线前 checklist。目录原生数组 ArrayINCREX 限流XNACK 流消息一批小增强Hash / TS / JSON / ZSet性能与落地PART 01 原生数组 Array终于能按下标存了8.8 新增了 Array 类型由 antirez 提交。它是一个按数字下标存取的字符串集合动态扩容、稀疏下标友好并且支持服务端聚合SUMMINMAX 直接在 Redis 内算不用把数据拉回客户端。常用命令可直接抄# 从下标 0 连续写入ARSET seats:A10free1sold2lockARGET seats:A11# 读单个下标 → soldARLEN seats:A1# 总长度最大下标1ARCOUNT seats:A1# 实际有值的槽位数稀疏友好ARINFO seats:A1 FULL# 看元数据 / slice 统计滑动窗口ARRING 比 RPUSHLTRIM 快一倍维护「最近 N 条」这类窗口经典写法是RPUSH 追加 LTRIM 截断。8.8 提供了ARRING命令专门把数组当定长环缓冲用官方在同机基准下吞吐比 RPUSHLTRIM 高约 2 倍且和环大小无关。读窗口用ARLASTITEMS。# 行情滑窗新报价写入尾部ARRING prices:6005191820.501821.101822.30# 取最近 300 条展示ARLASTITEMS prices:600519300# 服务端聚合不拉数据回客户端AROPSUM prices:600519# 求和ARGREP prices:600519182*# 类 grep 检索CASE 01选座 / 货位 / 充电桩位置本身就是下标一排座位、一排充电桩、一排快递柜哪个位置空闲占用维修按下标读写最贴合业务直觉不必把每个格子拆成独立 key。稀疏数组直接用 ARCOUNT 就能知道实际占用多少不用遍历。⚠️什么时候别用Array 不是 ListHashZSet 的替代品。需要 pushpop 或中间插入用 List需要字段名访问用 Hash。另外官方实测 Array 比 List 多占用约 18% 内存——初版大数组上线前先用MEMORY USAGE看一眼。PART 02 INCREX限流不用再写 Lua限流是 Redis 最高频的用途之一。过去要实现「每分钟 100 次」这种窗口计数基本人手一段Lua 脚本或者用 MULTIEXEC 包 INCREXPIRE。8.8 把这事做成了一条原子命令 INCREX递增、上下界、过期一次搞定少一次网络往返。真实语法注意不是三个位置参数INCREX key[BYFLOAT f|BYINT i][LBOUND lo][UBOUND hi][OVERFLOW WRAP|SAT|FAIL][EX s|PX ms|...|PERSIST][ENX]# 每用户每分钟≤100次上限10060s窗口INCREX api:user:42:req BYINT1UBOUND100EX60# → 返回 [当前计数, 实际增量]如 [3,1]放行 / [100,0]拒绝# 防爆破错误上限5到顶截断不报错INCREX login:fail:u1001 BYINT1UBOUND5EX60SATURATE几个关键点返回值同时给出新计数和实际增量调用方据此判断放行还是拒绝UBOUND是上限超了直接拒绝SATURATE则「部分接受」计数器截到上限、返回实际接受的增量适合防爆破锁账号ENX只在 key 首次创建时设过期避免每次请求都把窗口 TTL 重置。迁移对照原来怎么写8.8 之前最常见的固定窗口限流用的是这段 LuaINCR边界判断EXPIRE 包在一起保证原子-- ratelimit.lua经典写法localcurredis.call(incr,KEYS[1])ifcur1thenredis.call(expire,KEYS[1],ARGV[1])endifcurtonumber(ARGV[2])thenreturn0endreturn1现在上面这一段可以直接删掉换成一条 INCREX。少维护一份脚本、少一次往返边界语义还更全SATURATE、ENX 都是原来要自己写的。CASE 02中后台 API 限流 防爆破登录 防短信轰炸三类都是「计数限时可能要上限」的窗口场景API 每用户每分钟 100 次同一账号连续输错密码 5 次临时锁 60 秒同一手机号 60 秒内最多发 1 条验证码。用 INCREX 一把梭返回的实际增量就是「这次放行没」的判断依据。⚠️上手提示INCREX 的语法在 RC1→GA 之间改过修复 #15237。如果你在 RC 阶段就写过相关逻辑上线前务必按 8.8.1 文档重测一遍别直接搬 RC 的参数顺序。PART 03 XNACK流消息能主动「甩锅」了Stream 多消费者协作时消费者 XREADGROUP 读到消息、还没 XACK 就崩溃或处理失败消息会卡在PEL待处理列表里。以前只能等别的消费者靠 XAUTOCLAIMXCLAIM 超时回收——消息要闲置一阵才能被接手对实时系统不友好。8.8 加了XNACK处理失败的消费者可以显式把这条消息释放回 PEL立刻可被其他消费者认领重投不用干等回收周期。它和 XACK 的区别很直接XACK 是「成功了删掉」XNACK 是「我没处理好放回给别的人」。三种模式对应三种失败SILENT失败和消息本身无关服务重启、瞬时错误递减送达计数消息排回 PEL 头部重试。FAIL本消费者没资源处理CPU内存计数不变优先分给其他消费者。FATAL毒消息格式错、恶意送达计数设为 LLONG_MAX等人工介入不再自动重投。XREADGROUP GROUP order-g c1 COUNT1STREAMS orders# 处理失败主动释放这条消息XNACK orders order-g FAIL IDS1123-0# 其他消费者立刻能认领仍需主动来 claimXAUTOCLAIM orders order-g c200-0CASE 03订单流水线消费者崩溃同伴秒级接手消费者 C1 处理订单时宕机C2 不必等默认回收周期可能数分钟而是 C1 在退出前主动XNACK FAILC2 马上XAUTOCLAIM认领。体验差别就是「卡单」和「秒级恢复」。注意XNACK 之后消息仍在 PEL需要别的消费者来 claim 才会真正重投别指望它自动飞走。PART 04 一批小增强单独不大合起来省往返Hash 字段级通知7.4 的 Hash 字段过期HEXPIRE很实用但原来只能收到 key 级事件。8.8 加了subkey 通知——能订阅字段级的过期删除事件里带 key、字段名和类型。缓存失效、审计类场景不用再轮询或全 key 监听。时序多聚合单命令蜡烛图这类要同时算 MINMAXFIRSTLAST 的图表以前要发多条命令。8.8 让TS.RANGE 等一次返回多种聚合TS.RANGE sensor:temp - AGGREGATION avg60000\AGGREGATION max60000JSON 浮点精度可控JSON.SET新增FPHA参数可显式指定BF16FP16FP32FP64。存向量嵌入或传感器读数时按源数据精度在内存和精度之间权衡不用一刀切。ZSet 新增 COUNT 聚合器ZUNIONZINTER等集合运算支持COUNT 聚合每个元素的 score 反映它出现在几个输入集合里。标签重合度、去重统计这类需求多一个原生玩法ZUNION2zset1 zset2 AGGREGATE COUNT WITHSCORESFT.HYBRID KNN 增强向量混合检索FT.HYBRID支持 KNN 子句里每分片更少候选并新增FT.PROFILE HYBRID做性能剖析。大规模向量检索时这是个「用召回换延迟」的旋钮——先用FT.PROFILE量一遍再调生产。PART 05 性能数字 上线前清单8.8 在多处端到端吞吐做了优化。下面是官方给的一组数字——但先泼盆冷水这是 Redis 官方在 Intel Sapphire Rapids m7i.metal-24xl 单实例上的基准你的机器、数据分布、客户端链路不一样别直接当承诺。真要信自己跑一遍redis-benchmark-tset,get,mset-n1000000-q数据类型操作官方基准提升幅度Strings · MGETIO 线程最高 68%Streams · XREADGROUPCOUNT 100最高 83%Sorted Set · ZADDZINCRBY最高 74%扫描类 SCANHSCANSSCANZSCAN最高 40%Hash · HGETALL1K 字段最高 25%Bitmap 操作x86最高 28%HyperLogLog · PFCOUNTx86最高 18%持久化与全量复制最高快 60%底层还有几处通用优化x86 版默认开 LTO 链接时优化、部分代码迁到 Rust 降低 FFI 开销、ARM64 专项优化以及 batched prefetch 批量预取。另外别忘了 Array 比 List 多约 18% 内存——不是纯赚量级评估时算进去。上线前 checklist照着过一遍版本生产直接上 8.8.1。8.8.0 有多个 RESTORE 相关 RCE含 RedisBloomTimeSeries 模块公网暴露或处理不可信数据的实例尤其要升。升级顺序8.x 之间 RDBAOF 向后兼容可滚动重启。但 ArrayINCREXXNACK 是新类型和命令老版本从节点认不出——按「先升从、再切主、最后升老主」的标准滚动流程走。客户端 SDKgo-redis 9.20.0 才带 AR*INCREXXNACK 封装老版本用 EVAL裸命令字符串发也行但没有类型安全。INCREX 语法变了RC1→GA 改过参数顺序RC 阶段写的脚本上线前重测。大数组先看内存初版 Array 上线前用MEMORY USAGE看一眼稀疏数组靠ARCOUNT算实际占用。别硬上Array 不等于 ListHashXNACK 之后消息仍在 PEL记得配XAUTOCLAIM兜底别只靠它。写在最后要不要升判断标准很朴实你现在是不是正被三件事烦——用 Lua 做限流、用 List 维护滑动窗口、流消息只能等超时回收是的话8.8 能直接减代码量升。不是的话这版对你就是「性能小幅提升 几个用不上的命令」可以等下次大版本再动。版本上别纠结8.8.0 于 2026 年 5 月 GA8.8.12026 年 7 月修了一批安全漏洞生产直接用 8.8.1即可。命令细节以官方文档为准本文命令已在 8.8.1 上核对过语法。⚠️安全提醒8.8.0 修复了多起 RESTORE 相关的远程代码执行漏洞CVE-2026-25243 等含 RedisBloomTimeSeries 模块。涉及公网暴露或处理不可信数据的实例请优先升级到 8.8.1。如果这篇对你有参考价值欢迎关注[ 笑笑笑技术圈 ]后续会带来更多后端结构/Redis 与中间件的落地笔记。觉得有用就点个赞、在看、转发让更多被 Lua 限流折磨过的同学看到。

相关新闻

STL遗忘的知识点

STL遗忘的知识点

这里就只总结遗忘的知识点了hh#include<queue> int main() {priority_queue<int, vector<int>, greater<int>> q; //从大根堆变成小根堆vector<int>num;auto it1 upper_bound(num.begin(), num.end(), 1); //大于1的最小数&#xff0c;返回迭代…

2026/8/2 7:22:16 阅读更多 →
扬州中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖广陵/邗江/江都/仪征等全域各区 专治不制冷/漏水/异响/跳闸

扬州中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖广陵/邗江/江都/仪征等全域各区 专治不制冷/漏水/异响/跳闸

在扬州&#xff0c;中央空调突发故障是家庭、商铺与写字楼的高频烦心事——中央空调不制冷、内机漏水、外机异响跳闸、开机没反应等问题&#xff0c;往往在盛夏高温时集中爆发。很多用户会搜索“扬州中央空调维修”“扬州附近中央空调上门师傅”“扬州中央空调漏水维修电话”寻…

2026/8/2 7:21:16 阅读更多 →
从信号空间到匹配滤波器:最佳接收原理与误码率性能分析

从信号空间到匹配滤波器:最佳接收原理与误码率性能分析

1. 项目概述&#xff1a;从“最佳接收”说起 在数字通信系统里&#xff0c;我们工程师每天打交道最多的&#xff0c;除了各种协议栈&#xff0c;就是怎么把信号从噪声里干干净净地“捞”出来。你可能会觉得&#xff0c;发射端把信号功率调大点不就行了&#xff1f;但现实是&…

2026/8/2 7:21:16 阅读更多 →

最新新闻

兴隆台低龄孩子第一次上钢琴课,要注意什么?

兴隆台低龄孩子第一次上钢琴课,要注意什么?

很多兴隆台家长给孩子选钢琴课&#xff0c;第一反应不是“学不学得会”&#xff0c;而是&#xff1a;孩子坐不坐得住&#xff1f;会不会一上来就排斥&#xff1f;老师会不会太严&#xff1f;家里没琴怎么办&#xff1f;尤其是低龄孩子第一次接触钢琴&#xff0c;真的不能只看“…

2026/8/2 8:11:36 阅读更多 →
VBA代码加密解决方案目录及说明

VBA代码加密解决方案目录及说明

前 言VBA 代码加密&#xff0c;一般可以设置“查看时锁定工程”完成&#xff0c;但这个设置非常容易破解&#xff0c;起不 到加密&#xff0c;为此&#xff0c;我在推出 VBA 学习资料时给出了一份“VBA 程序文件的加密及解密”技术&#xff0c;可 以设置“工程不可查看”&#…

2026/8/2 8:11:36 阅读更多 →
盈兴通:别让“隐形耗材”偷走你的利润,一张接料带背后的SMT产线增效密码

盈兴通:别让“隐形耗材”偷走你的利润,一张接料带背后的SMT产线增效密码

在SMT贴片车间里&#xff0c;管理者们往往将目光聚焦于贴片机、锡膏与元器件这些“显性资产”上&#xff0c;却容易忽视那些单价低廉、消耗频繁的“隐形耗材”。殊不知&#xff0c;正是这些不起眼的辅料&#xff0c;在日复一日的量产中&#xff0c;悄悄左右着产线的综合成本与最…

2026/8/2 8:11:36 阅读更多 →
MockGPS:Android虚拟定位工具开发实战指南

MockGPS:Android虚拟定位工具开发实战指南

MockGPS&#xff1a;Android虚拟定位工具开发实战指南 【免费下载链接】MockGPS Android application to fake GPS 项目地址: https://gitcode.com/gh_mirrors/mo/MockGPS MockGPS是一款基于百度地图SDK的开源Android虚拟定位工具&#xff0c;专为移动应用开发者和测试人…

2026/8/2 8:11:36 阅读更多 →
EvoLib:构建可进化的LLM应用知识库,告别一次性提示工程

EvoLib:构建可进化的LLM应用知识库,告别一次性提示工程

在实际的大语言模型&#xff08;LLM&#xff09;应用开发中&#xff0c;一个常见的困境是&#xff1a;我们与模型的每一次交互&#xff0c;无论是成功的提示工程、精准的工具调用&#xff0c;还是有效的错误处理&#xff0c;都像是一次性的“对话”。这些宝贵的经验——哪些提示…

2026/8/2 8:11:35 阅读更多 →
AI工程化日志治理:从混乱到可审计的7步落地法,附GitHub开源模板

AI工程化日志治理:从混乱到可审计的7步落地法,附GitHub开源模板

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI工程化日志治理的演进与本质挑战 AI系统从实验原型走向规模化生产&#xff0c;日志已不再仅是调试副产品&#xff0c;而是承载模型行为可观测性、数据漂移预警、合规审计证据与MLOps闭环反馈的核心载体。传统…

2026/8/2 8:10:35 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →