redis分布式锁幂等性问题

发布时间 2023-09-05 16:27:33作者: 一直深夜吃食的喵

一.与Transcational注解同时使用

如果是自定义的切面,切面类要加@Order(Ordered.HIGHEST_PRECEDENCE),

保证redis锁的切面在事务切面外面,让事务先提交,再释放redis锁。

二.日期字段是datetime

背景:jmeter  500并发测试接口出现重复插入。接口逻辑如下

 服务器查看日志如下

数据库插入结果如下

2023-09-04 17.56.41.729 到 2023-09-04 17.56.42.015插入的数据,数据库的create_time都是按2023-09-04 17.56.42存储的。在高并发场景下,由于datetime会向上取整,出现重复插入

解决方案:datetime类型的create_time建表时数据类型改为datetime(3),可以支持到毫秒