userid | business_type | config_id | total_version
(userid,business_type) 这两个的组合会控制 total_version 版本号字段,每次在对(userid,business_type)更新或者插入时,都会让 total_version 自增然后插入或者更新。
问题:
在高并发插入的情况下,我先获取(userid,business_type)的最大版本号,然后执行插入的这个过程,会导致多个插入记录同时都获取的 totoal_version= 1 然后两个都会执行 version + 1 = 2,导致用户版本号丢失一次更新记录。这个问题要怎么解决呢?
最终解决方案:使用 Redis 中存储 userid,business_type 的版本号,通过 Redis 单线程来获取最新版本号,冗余一张用户业务版本号表。