当前位置: 首页 > 科技观察

SpringBoot新增注解,轻松实现Redis分布式锁

时间:2023-03-13 20:12:37 科技观察

一、业务背景一些业务请求是耗时操作,需要加锁,防止后续并发操作。商业冲击。2、分析过程使用Redis作为分布式锁,将锁的状态放在Redis中统一维护,解决了集群中单机JVM之间信息不兼容的问题,规定了操作顺序,保护了正确性的用户数据。梳理设计流程新建注解@interface,在注解中设置input标志增加AOP切点,扫描具体注解建立@Aspect切面任务,注册bean并拦截具体方法参数ProceedingJoinPoint,并在方法pjp.proceed()截取切入点之前和之后进行锁定,任务执行完成后删除key。核心步骤:加锁,解锁,继续加锁使用RedisTemplate的opsForValue.setIfAbsent方法判断是否有key,设置一个随机数UUID.random().toString,生成一个随机数作为value。从redis获取锁后,给key设置expire过期时间,过期后自动释放锁。按照这种设计,只有第一次请求成功设置Key才能进行后续的数据操作,后续请求无法获取