1.问题环境
公司开发的过程中,打卡的功能,由于c端前端,未做无法节流的操作会造成一秒多次的请求,但是完成打卡的接口又不能屏蔽,因为需要从该接口中获得相应的数据信息,因此针对于写的操作我们需要使用分布式锁。
2.分布式锁的使用的是redis使用setNx进行key值的插入,代码如下
boolean redisLock = this.setIfAbsent(ACCOMPANY_POST_ + userClockInRecordId, 1 + "");
try{
if (redisLock){
expire(ACCOMPANY_POST_ + userClockInRecordId,30,TimeUnit.SECONDS);
}
}catch (Exception e){
this.delete(ACCOMPANY_POST_ + userClockInRecordId);
}
return redisLock;