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

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

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

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

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

  • 相关阅读:
    C语言-第32课
    typeof和clamp
    C语言void*和*p的使用
    C语言二级指针和一级指针
    C语言结构体变量成员之指针变量成员的坑
    控制硬件三部曲
    C语言const char*使用
    jiffies是什么
    TPO3-1 Architecture
    相关关系|相关系数|线性关系|
  • 原文地址:https://www.cnblogs.com/zgz21/p/7405102.html
Copyright © 2011-2022 走看看