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
相关问题
mysql 如何匹配多个 like 条件?
2213浏览 • 1回复 待解决
MySQL如何多表合并查询
1099浏览 • 1回复 待解决
mysql中的last_insert_id是否可靠?
409浏览 • 1回复 待解决
insert中文到 mysql的varchar失败
471浏览 • 1回复 待解决
mysql如何查询当日数据?
1461浏览 • 1回复 待解决
关于mysql中order by查询的问题
691浏览 • 1回复 待解决
PostgreSQL insert 前判断是否存在?
1999浏览 • 2回复 待解决
sequelize;mysql关联表查询的问题
1401浏览 • 1回复 待解决
ArkTs多线程方案如何保证线程安全
418浏览 • 1回复 待解决
mysql 查询排序问题有了解的吗?
475浏览 • 1回复 待解决
mysql多对多查询sql怎么写?
587浏览 • 1回复 待解决
Mysql geojson 查询的问题有懂的吗?
1540浏览 • 1回复 待解决
PostgreSQL WHERE 计数条件
1225浏览 • 2回复 待解决
如何按照条件完成样式的链式调用
220浏览 • 1回复 待解决