redis计数器,记录某活动使用量
刚刚入行的小白,什么都不太懂,最近某活动要求奖品领取量上限为20万,就想到用redis来实现,代码如下:
代码片段
String redisKey= "Activity";
RedisUtil.setString(keyString, "0");//初始值为0
int countNum = 0;
//每月限量20万,所以每次用户进来都更新一下失效时间,为当月剩余时间
Long hLong = 86400 * getCurrentMonthDay() - DateUtils.getFragmentInSeconds(Calendar.getInstance(), Calendar.MONTH);
int hInt = hLong.intValue();
if (RedisUtil.isExists(keyString)) {
countNum = Integer.parseInt(RedisUtil.getString(countKey));
if (countNum > 200000) {
System.out.println("抱歉,奖品已发放完!");
} else {
RedisUtil.incr(countKey);
RedisUtil.expire(countKey, hInt);//失效时间到月末
//业务代码
}
}
public static int getCurrentMonthDay() {
//计算当月天数
Calendar a = Calendar.getInstance();
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return maxDate;
}
over