使用java springboot 使用 Redis 作为限流工具

使用 Redis 作为限流工具

Redis 还可以用于实现限流功能,例如限制每个 IP 地址的访问次数。你可以使用 Redis 的计数器功能来实现这一点。

实现限流逻辑
复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

@Service
public class RateLimiter {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public boolean isAllowed(String key, int maxRequests, int timeWindowInSeconds) {
        Long requestCount = redisTemplate.opsForValue().increment(key);

        if (requestCount == 1) {
            // 如果是第一次请求,设置过期时间
            redisTemplate.expire(key, timeWindowInSeconds, TimeUnit.SECONDS);
        }

        return requestCount <= maxRequests;
    }
}
相关推荐
pas1361 天前
46-mini-vue 实现编译 template 为 render 函数
前端·javascript·vue.js
木斯佳1 天前
前端八股文面经大全:京东零售前端实习一面(2026-1-20)·面经深度解析
前端·状态模式·零售
zheshiyangyang1 天前
前端面试基础知识整理【Day-8】
前端·面试·职场和发展
a1117761 天前
优雅简历(html开源)
前端·开源·html
Cache技术分享1 天前
330. Java Stream API - 处理 Optional 对象:像流一样优雅地使用 Optional
前端·后端
感性的程序员小王1 天前
别再手撸架构图了!我写了个 AI 工具,把 Spring Boot 代码一键变成 Draw.io 流程图
前端·后端
猪头男1 天前
【从零开始学习Vue|第七篇】深入组件——Props
前端
孟健1 天前
AI 团队翻车之后,我想告诉你这 3 件事
前端
木斯佳1 天前
前端八股文面经大全:字节前端一面(2026-2-1)·面经深度解析
前端·状态模式
宇木灵1 天前
C语言基础-四、函数
c语言·开发语言·前端·学习