1.有统计阅读量接口
前端相当于并行执行
放到redis做定时任务入库
2.无统计量阅读接口
和获取文章内容在一个事务内,
问题:先增加访问量后获取文章内容,增加访问量耗时过长,影响获取文章内容,进而影响用户体验
解决方案:增加访问量放线程池,但由于多线程并发情况下可能会出现一种情况,两获取到未修改访问量,a线程先修改加写锁,b线程修改拿到的是a未修改的访问量,导致b线程增加访问量失效,
可以使用sql乐观锁,更新时检查当前访问量是否等于之前获取访问量,不一样则不更新
不更新会导致数据少一个访问记录,所以抛出异常,使用aop接口解决出现矛盾的情况