mysql 先查询条件再insert,如何保证其原子性?

一个投票项目
判断当前用户当天投票数不超过3票,满足条件,则往日志表插入一条记录。

当并发大的情况下,往往不能保证数据准确的不超过3票。


mysql
原子性
2023-03-30 13:14:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
那年风夏
1

select + insert 这两个操作的原子性,最常用的就是使用锁

1.直接使用mysql的锁,开启事务,select 的时候加排他锁,select ... for update,查到后再insert,commit之后排他锁释放

2.使用redis分布式锁,setnx获取锁,然后再进行查询和insert操作,完成后del锁

分享
微博
QQ
微信
回复
2023-03-30 14:33:00
相关问题
insert中文到 mysql的varchar失败
1945浏览 • 1回复 待解决
mysql 如何匹配多个 like 条件?
4041浏览 • 1回复 待解决
mysql中的last_insert_id是否可靠?
2139浏览 • 1回复 待解决
MySQL如何多表合并查询
2720浏览 • 1回复 待解决
举例说明媒体条件查询如何使用
359浏览 • 1回复 待解决
mysql如何查询当日数据?
3212浏览 • 1回复 待解决
关于mysql中order by查询的问题
2307浏览 • 1回复 待解决
sequelize;mysql关联表查询的问题
3118浏览 • 1回复 待解决
mysql 查询排序问题有了解的吗?
2223浏览 • 1回复 待解决
mysql多对多查询sql怎么写?
2152浏览 • 1回复 待解决
Mysql geojson 查询的问题有懂的吗?
3192浏览 • 1回复 待解决