Redis防止重复提交

为了防止用户频繁点击按钮,一直提交重复数据

import com.furnish.common.constant.CacheConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * redis防止重复提交
 *
 * @author Administrator
 */
@Component
public class RedisRepetitionSubmit {

    private static RedisTemplate redisTemplate;

    @Autowired
    public void setRedisTemplate(RedisTemplate redisTemplate) {
        RedisRepetitionSubmit.redisTemplate = redisTemplate;
    }


    /**
     * redis防重复提交
     *
     * @param id
     * @return
     */
    public static boolean getRedisRepetition(String id) {
        //每次访问 + 1 (可以实现计数器)
        Long count = redisTemplate.opsForValue().increment("repeat_submit:" + id, 1);
        if (count == 1) {
            redisTemplate.expire("repeat_submit:" + id, 5, TimeUnit.SECONDS);
            return true;
        }
        return false;
    }

}

以用户的id或者其他参数进行设置唯一的key,然后进行判断是否包含 

//防止连续点击生成多条记录 (5秒)
        boolean redisRepetition = RedisRepetitionSubmit.getRedisRepetition(wnBankAudit.getUserId());
        if (!redisRepetition) {
            return R.error().setMsg("请勿重复操作");
        }
        boolean b = wnBankAuditService.addWnBankAudit(wnBankAudit);
        if (b) {
            return R.ok().setMsg("提交成功");
        }

猜你喜欢

转载自blog.csdn.net/Java_Mr_Jin/article/details/127241825