1、锁方案:
可以往数据库中插入一条数据,这条数据利用 唯一索引 使数据是唯一的。
能插入,就表示数据没有锁,可以正常执行
插入报错 ‘数据的唯一性’ ,则表示数据已经枷锁了,不能执行
执行完成后,删除这条数据 (锁)
2、定时任务,使用方案
目的: 防止定时任务重复执行,比如 1min、3min 执行一次的定时任务
A、使用 ‘通用代码’ 的数据,做 ‘锁’ ,就不用专门的搞一张表来处理锁了
B、定时任务运行时,加锁
C、如果加锁成功,正常执行定时任务。执行完成后,删除锁
D、如果枷锁失败,则不定时任务结束。但如果上次加锁的时间过长,比如超过 30min,则直接删除锁,执行定时任务。
3、防止数据重复,使用方案
目的:功能在同一时间,多个人在使用,数据库同事插入的一样的数据,但这些数据的状态又涉及到多个字段的动态变化,不能直接使用索引解决问题。
A、方法运行时,按数据 字段层面的,唯一性 (一些场景下,多个字段,形成唯一数据,业务上不容许重复)。将这些字段,拼接在一起,作为锁直接插入 ‘通用代码的数据字典’。
B、方法运行完成后,删除对应的锁。
C、如果插入锁失败,则表示重复了,可以给提示,或者直接转查询处理。