使用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;
    }
}
相关推荐
青莲84310 分钟前
Android 事件分发机制 - 事件流向详解
android·前端·面试
musashi10 分钟前
用 Electron 写了一个 macOS 版本的 wallpaper(附源码、下载地址)
前端·vue.js·electron
满天星辰11 分钟前
Typescript之类型总结大全
前端·typescript
JFChen12 分钟前
Web 仔用 Node 像 Java 一样写后端服务
前端
XiaoSong15 分钟前
React useState 原理和异步更新
前端·react.js
徐徐子16 分钟前
从vue3 watch开始理解Vue的响应式原理
前端·vue.js
眯眼因为很困啦19 分钟前
GitHub Fork 协作完整流程
前端·git·前端工程化
whisper22 分钟前
🚀 React Router 7 + Vercel 部署全指南
前端
还债大湿兄31 分钟前
huggingface.co 下载有些要给权限的模型 小记录
开发语言·前端·javascript
叶落无痕5231 分钟前
Electron应用自动化测试实例
前端·javascript·功能测试·测试工具·electron·单元测试