使用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;
    }
}
相关推荐
&活在当下&6 分钟前
Vue3 给 reactive 响应式对象赋值
前端·vue.js
坐公交也用券38 分钟前
VUE3配置后端地址,实现前后端分离及开发、正式环境分离
前端·javascript·vue.js
独孤求败Ace1 小时前
第31天:Web开发-PHP应用&TP框架&MVC模型&路由访问&模版渲染&安全写法&版本漏洞
前端·php·mvc
星星不闪包退换2 小时前
css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)
前端·css
疯狂的沙粒2 小时前
HTML和CSS相关的问题,如何避免 CSS 样式冲突?
前端·css·html
家电修理师2 小时前
HBuilderX打包ios保姆式教程
前端·ios
草木红2 小时前
六、Angular 发送请求/ HttpClient 模块
服务器·前端·javascript·angular.js
baozhengw2 小时前
SpringBoot项目实战(39)--Beetl网页HTML文件中静态图片及CSS、JS文件的引用和展示
javascript·css·html·beetl
疯狂的沙粒2 小时前
HTML和CSS相关的问题,为什么某些元素的字体无法加载?
css·html·tensorflow
kkkkatoq3 小时前
EasyExcel的应用
java·前端·servlet