SpringBoot 分布式令牌桶限流:集成 Bucket4j + Redis

发布时间:2026/10/30 23:55:14

SpringBoot 分布式令牌桶限流:集成 Bucket4j + Redis SpringBoot 分布式令牌桶限流集成 Bucket4j Redis一、pom.xml版本号Redis 客户端二、Bucket4j 配置三、配置 JedisPool一、pom.xml本文使用的 SpringBoot 版本为 4.0.3JDK 版本为 25以下是集成 Bucket4j 需要引入的相关依赖!-- springboot相关依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aspectj/artifactId/dependency!-- bucket4j的springboot 依赖 --dependencygroupIdcom.giffing.bucket4j.spring.boot.starter/groupIdartifactIdbucket4j-spring-boot-starter/artifactIdversion0.14.0/version/dependency!-- bucket4j的redis-jedis依赖 --dependencygroupIdcom.bucket4j/groupIdartifactIdbucket4j_jdk17-redis-common/artifactIdversion8.15.0/version/dependencydependencygroupIdcom.bucket4j/groupIdartifactIdbucket4j_jdk17-jedis/artifactIdversion8.15.0/version/dependency!-- spring-boot-starter-cache --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId/dependency!-- jedis依赖 --dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactId/dependency版本号bucket4j-spring-boot-starter 以及 bucket4j_jdk17-redis-common、bucket4j_jdk17-jedis 的版本号参考 bucket4j-spring-boot-starter github 文档Redis 客户端大部分 SpringBoot 应用使用的是基于 Servlet 同步阻塞模型的 spring-boot-starter-web 依赖因此在集成 Bucket4j 时必须使用 Redis 的 Jedis 客户端。如果使用的是基于 Flux 异步响应模型的 spring-boot-starter-webflux 依赖则可以选择 Lettuce 或 Redisson 客户端。此处参考 bucket4j-spring-boot-starter 配置Jedis 只支持同步Lettuce 和 Redisson 只支持异步。二、Bucket4j 配置本文采用 RateLimiting 注解的方式以下是 yaml 配置bucket4j:cache-to-use:redis-jedismethods:-name:rate-limit-method#RateLimiting引用的方法名cache-name:bucketsrate-limit:bandwidths:-capacity:5#总容量refill-capacity:3#填充量time:10#10s内填充3个令牌最多保留5个unit:secondsrefill-speed:greedy#greedy贪婪模式在时间内均匀发放interval间隔模式到时间一次性发放将 RateLimiting 注解在需要限流的 Controller 层方法上RateLimiting(namerate-limit-method,//配置的methods名称fallbackMethodNamefallbackMethod)//超限时执行的方法名定义在下面PostMapping(/rateLimitTest)publicResponseEntityBooleanrateLimitTest(){returnResponseEntity.ok(true);}/** * 定义bucket4j请求超限时执行的后备方法 */publicResponseEntityBooleanfallbackMethod(){returnResponseEntity.ok(false);}此外也可以采用配置 filters 属性的方式无需注解参考 bucket4j-spring-boot-starter github 文档。三、配置 JedisPool完成上面的配置后初次启动报错。检查 Bucket4j 的 Jedis 源码发现需要定义一个 JedisPool 的 Bean编写 JedisPool 配置类ConfigurationpublicclassRedisConfig{/** * 用于bucket4j */BeanpublicJedisPooljedisPool(JedisPropertiesjedisProperties){JedisPoolConfigjedisPoolConfignewJedisPoolConfig();jedisPoolConfig.setMaxTotal(jedisProperties.getJedis().getPool().getMaxActive());jedisPoolConfig.setMaxWait(jedisProperties.getJedis().getPool().getMaxWait());jedisPoolConfig.setMaxIdle(jedisProperties.getJedis().getPool().getMaxIdle());jedisPoolConfig.setMinIdle(jedisProperties.getJedis().getPool().getMinIdle());returnnewJedisPool(jedisPoolConfig,jedisProperties.getHost(),jedisProperties.getPort(),Math.toIntExact(jedisProperties.getTimeout().toMillis()),jedisProperties.getPassword(),jedisProperties.getDatabase());}}读取 Jedis 配置的类ComponentConfigurationProperties(prefixspring.data.redis)DatapublicclassJedisProperties{privateStringhost;privateIntegerport;privateStringpassword;privateIntegerdatabase;privateDurationtimeout;privateMyJedisPooljedis;DatapublicstaticclassMyJedisPool{privatePoolpool;DatapublicstaticclassPool{privateIntegermaxActive;privateDurationmaxWait;privateIntegermaxIdle;privateIntegerminIdle;}}}application.yamlspring:data:redis:host:${host}port:6379password:${password}database:0timeout:10s#用于bucket4jjedis:pool:max-active:200max-wait:10smax-idle:10min-idle:1至此已完成所有配置可以请求方法进行限流测试了。参考[1]: bucket4j github 文档[2]: bucket4j-spring-boot-starter github 文档[3]: bucket4j 官方文档集成 jedis[4]: 轻松实现 API 接口限流Bucket4j 在 Spring Boot 中的应用[5]: Jedis使用教程详解
延伸阅读

更多相关文章

2026/10/25 16:07:26

从语音识别到字幕打轴:构建智能字幕工作流的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 18:30:41

昆明靠谱导游挑选指南:春城花海之旅避坑攻略+口碑向导推荐

昆明,这座被称为“春城”的高原明珠,藏着石林的喀斯特地质奇迹、滇池的红嘴鸥诗意、云南民族村的多元风情,还有过桥米线的鲜香、汽锅鸡的滋补、鲜花饼的甜蜜。想要深度解锁这里的四季花海、千年地质与滇味美食,选对一位懂石林地质…

2026/10/23 14:14:39

8款精选AI论文工具横向实测,本硕博避坑必备指南

前言:AI 写论文乱象频发,实测 8 款工具理清适配边界 每到毕业季,本科生、硕博生都会集中寻找 AI 论文辅助工具,市面各类写作软件层出不穷。然而,这些工具普遍存在几大硬伤:参考文献虚假、无法匹配本校格式…

2026/10/31 12:34:11

SAR图像亮暗机制解析:哨兵1号数据入门与地物判读实战

光学影像看多了,换个口味聊聊雷达图像。这几年遥感圈里有个挺有意思的现象:做地物分类、变化检测、灾害评估的项目,十有八九拿的都是多光谱影像,一提到SAR(合成孔径雷达),不少人第一反应是"…

2026/10/31 12:34:11

企业级AI Agent的核心标准与实践路径

1. 企业级AI Agent的本质差异 最近AI圈里Manus和Moltbot这两个名字确实火得不行,但作为一个在企业IT领域摸爬滚打多年的老鸟,我必须说句大实话:这些看起来很酷的AI Agent,离真正的企业级应用还差着十万八千里。这就像拿玩具车和重…

2026/10/31 12:34:11

CODE V 定焦物镜设计:从规格反推视场角到 MTF 验收全流程

简介:这份文档面向光学设计初学者与工程实践者,围绕CODE V在数码相机定焦镜头设计中的完整流程展开,重点讲解如何建立镜头、缩放镜头以及查看与分析像差曲线。内容以低价位VGA定焦物镜为案例,从规格设定入手,涵盖F/#与…

2026/10/31 12:34:11

60个AI工具终极清单:按场景闭眼入的高效工具手册

去年年底有读者问我,能不能把市面上能打的AI工具整理成一份清单。我当时是拒绝的,因为这种清单我见过太多了,打开一看几百个图标堆在一起,收藏之后再也没有打开过。但这阵子陆续有人私信各种搜索词,比如“免费查AI率工…

2026/10/31 12:34:11

大模型工具调用失败排查指南:从请求构造到结果回传的工程实践

1. 问题现象与影响范围定位 调用工具失败这件事,表面上看是一个报错,实际上背后牵扯的链路比大多数人想象的要长。我前后花了大概三周时间,在多个不同配置的环境里反复复现和定位,才把这个问题彻底吃透。先说结论:绝大…

2026/10/31 12:29:10

大模型智能体沙盒逃逸:国产AI安全架构的四层防御实践

1. 事件复盘:从OpenAI沙盒逃逸到国产模型的共性风险暴露去年底那场OpenAI智能体沙盒逃逸事件,我全程盯了三天。不是因为它是国外的事——恰恰相反,当时我就在调试一个基于某国产大模型API构建的客服智能体,正准备上线灰度测试。结…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/30 20:55:09

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑