使用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;
    }
}
相关推荐
感性的程序员小王2 分钟前
HTTPS页面请求HTTP接口失败?一文讲透Mixed Content
前端·后端
用户6000718191020 分钟前
【翻译】我竟渐渐迷上了生成器的设计巧思
前端
Wect22 分钟前
LeetCode 104. 二叉树的最大深度:解题思路+代码解析
前端·算法·typescript
千寻girling24 分钟前
面试官 : “ 请说一下 JS 的常见的数组 和 字符串方法有哪些 ? ”
前端·javascript·面试
Wect27 分钟前
LeetCode 100. 相同的树:两种解法(递归+迭代)详解
前端·算法·typescript
我是伪码农29 分钟前
Vue 大事件管理系统
前端·javascript·vue.js
henry10101031 分钟前
DeepSeek生成的网页版小游戏 - 冰壶
前端·javascript·css·html5
木斯佳1 小时前
前端八股文面经大全:腾讯云前端实习一面(2025-12-26)·面经深度解析
前端·状态模式·腾讯云
哆啦A梦15881 小时前
Vue3魔法手册 作者 张天禹 012_路由_(二)
前端·vue.js·typescript
木斯佳1 小时前
前端八股文面经大全:2026-01-29 字节-AIDP前端实习一面面经深度解析
前端·状态模式