关于并发的问题

php后台需要往mysql数据库表里插入记录,这张表的id是主键但不是自增长的,需要通过某种规则计算出来,比如先查看当天创建的记录有N个,那么这次的id就设为xxxN+1.如果访问量比较大情况下,可能多个请求先获取到的记录个数相同,那么就有可能生成相同的id,插入数据库的话就会报错,这种情况应该如何处理呢?

当年话下
浏览 397回答 5
5回答

慕容3067478

1、如果业务需求一致性很强的话,加锁,或者线程阻塞保证数组的强一致性2、使用非关系型数据库比如redis或者mongodb或者mecache3、使用队列

慕少森

Redis的incr可以解决

萧十郎

锁数据库并不是一个好办法,可能在并发时导致提交失败。建议还是修改数据库架构,把当前主键改为unique索引。

Smart猫小萌

建议id做保留字段,如你所说的规则,将日期做一个字段,当天的记录号作一个字段,建立联合唯一索引 redis来计数当天的记录数,如果并发量较大,可以考虑队列消耗
打开App,查看更多内容
随时随地看视频慕课网APP