zoukankan      html  css  js  c++  java
  • redis缓存与数据库的记录不一致造成的问题.(乐观锁)

      有时为了执行数据快,会将一些数据放入缓存。我们的dao层是自己写的一套,项目中有用到用户表,而这个表采用的是乐观锁更新(采用乐观锁更新与否,是在表里有个标识字段,dao底层控制乐观锁更新)。今天工程遇到了一个问题,工程里有些更新用户信息的方法,只保存了数据库,没有更新到redis缓存,所以会存在这样一种情况:

      当取用户缓存信息,对了信息做了修改,保存的时候,乐观锁更新时,发现版本不一致因为保存了数据库,版本已经加1,而缓存里的用户信息的版本还是不变。

      按理来说,这种情况是对的,不允许脏数据,但是这样在更新用户信息(有很多地方涉及到用户表的更新),就比较容易出现更新失败,避免大面积的出现这种情况,所以在保存用户信息到数据库的同时,也更新缓存。

      个人感觉缓存的设计还是必须的,什么数据应该进行缓存,什么数据应该从缓存取,而不是单纯的就拿来用即可。

  • 相关阅读:
    Java 引用类型
    Mysql-5.7.14使用常见问题汇总
    CountBoard 是一个基于Tkinter简单的,开源的桌面日程倒计时应用
    HashMap的源码分析
    redis-cluster源码分析
    redis集群方案
    redis集群命令
    redis集群删除master节点
    redis集群添加master节点
    redis集群部署
  • 原文地址:https://www.cnblogs.com/zgz21/p/7405102.html
Copyright © 2011-2022 走看看