redis + aop 限制方法频率,防止重复提交

项目中遇到因网络问题导致的重复提交,通过在前端限制未能完全解决。本文介绍了使用Redis结合Spring AOP来限制用户在10秒内不能执行第二次新增操作,以用户ID作为Key,设置过期时间,实现简单且易于维护。
摘要由CSDN通过智能技术生成

项目在运行时期,访问时会因为网络卡顿等原因造成重复点击,多次提交的问题。

尝试在前端做过限制,之后觉得使用redis 更为简单。

1. redis 可以 设置过期时间,符合需求

2.使用spring aop,只需要配置第一次,之后不需要更改

实现思路,用户10秒内不能执行第二次新增方法,以用户ID 作为 key。

 AOP

@Aspect
@Component
public class FlowRateLimit {

	@Resource(name="RedisServiceImpl")
	private RedisService redisService;
 
       //配置哪些方法需要拦截
	public static final String POINT = "execution (* com.sub.serviceimpl.ProcessSaveStartServiceImpl.*(..))";


	@Before(POINT)
	public void saveLimit(JoinPoint point) {
		String key = GlobalConstant.RedisTool.SAVELIMIT + SessionContext.get().getAd_user_id();
		String s = redisService.get(key);
                //查询redis 中是否存在此key 无则添加,有则抛出异常
		if (StringUtils.isBlank(s)){
			redisService.addIncludeTime(key, GlobalConstant.RedisTool.INITIALVALUE,10);
		}else {
			throw new MyExcep
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值