使用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;
    }
}
相关推荐
帆张芳显3 分钟前
智表zcell产品V3.5 版发布,新增行列选中操作等功能
前端·javascript·excel·插件·canva可画
程序员小寒5 分钟前
前端性能优化之首屏时间采集篇
前端·性能优化
GGGG寄了7 分钟前
HTML——div和span标签和字符实体
前端·html
这儿有一堆花16 分钟前
网页开发的基石:深入解析 HTML 与 PHP 的本质差异
前端·html·php
RFCEO18 分钟前
网页编程 课程三、:HTML 核心规范(语义化+易维护)详解课程
前端·html·语义化·html核心规范·易维护·前端基础课
苦藤新鸡41 分钟前
27.合并有序链表,串葫芦
前端·javascript·链表
_OP_CHEN43 分钟前
【前端开发之HTML】(四)HTML 标签进阶:表格、表单、布局全掌握,从新手到实战高手!
前端·javascript·css·html·html5·网页开发·html标签
Alair‎1 小时前
前端开发之环境配置
前端·react.js
Deca~1 小时前
VueVirtualLazyTree-支持懒加载的虚拟树
前端·javascript·vue.js
爱上妖精的尾巴1 小时前
7-11 WPS JS宏 对象的属性值为函数的写法与用法
前端·javascript·wps·js宏·jsa