收货地址需求

当用户首次创建收货地址时,自动设置为默认地址,之后用户添加新的默认地址或修改其他收货地址为默认收货地址时,原来的默认收货地址变更为非默认地址,如何设计保证在多线程情况下数据不会出错,一般这种需求

达令说
浏览 693回答 5
5回答

qq_遁去的一_1

数据库加一个字段,判断是否为默认地址。例如:1默认0不默认,让1唯一

慕容3067478

address 表加个is_default 字段默认为 0(不是默认) 1(默认)第一次就读库,如果为空那么这次就是首次添加地址 则 is_default=1 否则为0

慕勒3428872

表加字段,或者redis等做缓存,两者还可以结合用:一个是针对session或当前客户端的,一个是除前者之外的默认

拉风的咖菲猫

1.多线程出现问题的原因是多个线程的数据不可见性,即多个线程看到的数据都是各自为政的,所以在修改的时候会出现多个默认地址;2.解决方案:select * from table for update,查询加锁,放在一个事务里,事务结束,锁消除
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java