redis限定接口调用次数

一般第三方api都会有每分钟或者每秒限定调用次数的功能,这也是为了防止恶意调用攻击服务器而做的。开发中登陆次数,调用次数这些类似的功能都可以放到redis中去实现。

思路:前端发送接口调用请求,将可以作为唯一标记的字段作为key,放到redis中,并可以设置有效时间。在key有效时间内,每调用一次增加1。若次数超过限定则限定处理就可以了。

下面是仿照第三方开放api,实现的一个小demo.

 public void checkNumber (String xxx) { //xxx 可以作为唯一标识的字段
        Integer count = 100; //count 限定调用次数可以从数据库中取数据也可以在代码中规定
        Integer limitTime = 60; //过期时间
        Integer redisCount = null;

        if (redisUtil.hasKey(xxx)){
            redisCount = (Integer)redisUtil.get(xxx);
            if(redisCount >= count) {
                //throw new Exception("接口调用超出限定次数");
            }else {
                redisUtil.incr(xxx,1);
            }
        }else {
            redisUtil.set(xxx,1);//若不存在设置key
            redisUtil.expire(xxx,limitTime); //指定过期时间
        }
    }

redisUtil工具类,网上有很多可以直接找来用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值