后台防止重复请求

实现方式:利用redis实现

原理:redis是单线程的

示例代码:

RedisUtil redis = RedisUtil.GET();
// 在进入方法之后先从redis里取唯一标识
// 如有就说明发生了重复请求,直接退出方法
// 如果没有就说明没有发生重复请求,然后将唯一标识存进redis里
String redisUserId = redis.get("userId:"+userInfo.getId());
if (userInfo.getId().equals(redisUserId)) {
    ext.setSuccess(false);
    ext.setMsg("点击频率太快");
    return ext;
}
// 最好将业务标识+加唯一标识存进redis
redis.setForTimeMIN("userId:"+userInfo.getId(), userInfo.getId(), 1);
// 注意,在正常业务流程走完之后,或者程序在执行的过程中出现了异常,都需要将redis里的信息删除掉,否则会影响下一次业务的执行。所以建议将删除代码放在finally代码块里面
posted @ 2019-11-06 11:10  xxx从入门到入坟  阅读(323)  评论(0)    收藏  举报