利用redis做频率限制第一篇

来源:互联网 发布:小轮公路车java 编辑:程序博客网 时间:2024/05/13 12:34
public Result checkRateLimit(String clientIp, int ipTime, int ipCount) {// 每个ip的redis的key都不一样String ipRateKey = "ipRates:" + clientIp;System.out.println(ipRateKey);long time = commonRedis.ttl(ipRateKey);System.out.println("ttl time: " + time);if (time > 0) {System.out.println(ipRateKey + "还未过期");} else if (time == -1) {System.out.println(ipRateKey + "不存在或是设置过期时间");}String ipRates = commonRedis.get(ipRateKey);Integer ipTimes = 0;if (ipRates == null) {// 没有此键commonRedis.set(ipRateKey, "1");commonRedis.expire(ipRateKey, 1000);ipTimes = 1;} else {// 有此键ipTimes = Integer.parseInt(ipRates);commonRedis.incr(ipRateKey);}System.out.println("ipTimes: " + ipTimes);if (ipTimes > ipCount) {return new Result(-1, "该ip频率受限,每分钟最多登录" + ipCount + "次");}return new Result(0, "success");}


0 0