使用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;
    }
}
相关推荐
用户2136610035723 分钟前
Redux异步方案与React性能优化Hooks
前端
假如让我当三天老蒯5 分钟前
TypeScript 继续学习(学习用)
前端·面试·typescript
玄玄子5 分钟前
CSS 浮动引起父元素高度塌陷
前端·css
竹林8188 分钟前
从 ethers.js 到 viem:我在一个 DeFi 看板项目中踩过的所有坑与最终方案
前端·javascript
kyrie2811 分钟前
React Redux 完整用法
前端
程序员鱼皮16 分钟前
Codex 又出王炸功能「录制回放」,实战测评!附原理浅析
前端·后端·ai编程
lichenyang45325 分钟前
AbilityMeta 能力元信息:不只是能调用,还要能看懂
前端
渣波33 分钟前
拒绝黑盒!NestJS + LangChain 实战保姆级拆解,手把手教你搞定双 Token 与 AI 大脑
前端·后端
SL_staff33 分钟前
3周搭完MES系统:JVS低代码+JVS-IoT物联网的实战记录
java·前端·低代码
秋天的一阵风34 分钟前
Vue 3 里被严重低估的 API:InjectionKey
前端·javascript·vue.js