目录

悲观锁解决方案

乐观锁解决方案


        多个系统实例同时并发的更新一个KEY,那么本来应该先到数据库的数据结果后来到了,只要顺序错了,数据库错了。

悲观锁解决方案

        使用MySQL悲观锁。

         【夯实Redis】Redis并发竞争问题

        【夯实Redis】Redis并发竞争问题

        使用Redis锁

       在操作数据库之前,先获取Redis的分布式锁。确保同一时刻只有同一个系统实例在操作某个KEY。别的系统实例都不允许写。

 

乐观锁解决方案

        在读某个KEY的时候,会把这个KEY对应的值以及时间戳放入缓存。

        在写某个KEY的之前,先在缓存中读取这个KEY以及这个KEY的对应的上次更新时间戳。

        然后在执行业务操作,在业务执行操作后提交数据库之前,先查看缓存中的KEY与之前的KEY是否一样。

        如果不一样说明在此期间有其它线程更新过了这个KEY,那么就不能执行写入操作。需要重新读取最新的这个KEY的数据,然后再循环操作。

分类:

技术点:

相关文章: