使用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;
    }
}
相关推荐
Cache技术分享2 分钟前
326. Java Stream API - 实现自定义的 toList() 与 toSet() 收集器
前端·后端
PythonFun12 分钟前
WPS动态序号填充,告别手动调整烦恼
java·前端·python
Cache技术分享14 分钟前
325. Java Stream API - 理解 Collector 的三大特性:助力流处理优化
前端·后端
Wcowin17 分钟前
【2】 Zensical配置详解
前端·github
REDcker29 分钟前
Web 音视频流媒体 API 全景
前端·音视频
phltxy31 分钟前
Vue进阶实战:自定义指令与插槽的核心用法及实战案例
前端·javascript·vue.js
西门吹-禅34 分钟前
【iFLow skills】
前端·chrome
春波petal35 分钟前
MacOS 13.7.8版本-前端环境一键搭建指南
前端·macos
Never_Satisfied1 小时前
在JavaScript / HTML中,触发某个对象的click事件
开发语言·javascript·html
许同1 小时前
JS-WPS 自动化办公(5)多Sheet整合
开发语言·前端·javascript