一个投票项目判断当前用户当天投票数不超过3票,满足条件,则往日志表插入一条记录。
当并发大的情况下,往往不能保证数据准确的不超过3票。
select + insert 这两个操作的原子性,最常用的就是使用锁1.直接使用mysql的锁,开启事务,select 的时候加排他锁,select ... for update,查到后再insert,commit之后排他锁释放2.使用redis分布式锁,setnx获取锁,然后再进行查询和insert操作,完成后del锁
2.1m questions
2.1m answers
62 comments
56.6k users