使用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;
    }
}
相关推荐
贼爱学习的小黄18 小时前
NC BIP参照开发
java·前端·nc
小江的记录本18 小时前
【MyBatis-Plus】MyBatis-Plus的核心特性、条件构造器、分页插件、乐观锁插件
java·前端·spring boot·后端·sql·tomcat·mybatis
光影少年18 小时前
如何进行前端性能优化?
前端·性能优化
Dxy123931021618 小时前
js如何把字符串转数字
开发语言·前端·javascript
爱写bug的野原新之助18 小时前
爬虫之补环境:加载原型链
前端·javascript·爬虫
陈广亮18 小时前
工具指南7-Unix时间戳转换工具
前端
NGBQ1213818 小时前
Adobe-Premiere-Pro-2026-26.0.2.2-m0nkrus 全解析:专业视频编辑软件深度指南
前端·adobe·音视频
北城笑笑18 小时前
Chrome:Paused in debugger 的踩坑实录:问题排查全过程与终极解决方案( 在调试器中暂停 )
前端·chrome
haorooms18 小时前
Promise.try () 完全指南
前端·javascript
kyriewen18 小时前
闭包:那个“赖着不走”的家伙,到底有什么用?
前端·javascript·ecmascript 6