比如我现在做一个文章点击次数记录数据库设计就是对应文章这一项有一个字段用于记录此文章点击次数只要用户点击文章controller就响应数据库做一次累加,那问题就是,如果多个用户同时并发会不会导致数据累加错误。我知道spring默认是单例模式,同时controller只有对应service接口,这样是线程安全的,但数据库操作也会安全吗?

解决方案 »

  1.   

    关注一下,看看除了先缓存再存储,和nosql,还有啥其他办法没
      

  2.   

    用的mysql吗,是不是更新的相同一行数据,mysql的update默认实现排它锁,但是写sql的时候不要先查询再用结果加1,而是像这样 update tablename set count=count+1,所以说线程安全不是绝对的
      

  3.   

    嗯,我今天百度查了一下mysql innodb存储引擎,默认是实现了排他锁!不知道是不是不太高并发的操作就不用去想这个问题了
      

  4.   

    建议就像csdn的查看文章一样,先写入缓存中,在一定时间内统一更新,减少数据库压力