数据库 缓存不一致怎么避免

十一文 发布于 2011/12/09 22:31
阅读 2K+
收藏 0

但是可能出现这种情况

 数据已经跟新到数据库

 但是这时候缓存连接不上了

 这种情况可能导致缓存和数据库的不一致

 这中情况怎么避免啊?

加载中
0
dy810810
dy810810

手动更新,定点清除都可以。

0
红薯
红薯
缓存连接不上,是类似 memcached 的缓存服务器?
0
笨蛋EGG
笨蛋EGG

这个能不能这样做:

为了避免在更新缓存时,发生错误而导致缓存不一致,自己做一个缓存更新的列表,数据库更新时,把需要更新的缓存点同时放到列表里,然后更新缓存,成功则出列,不成功则标记,同时做一个定时访问这个列表里是否有需要更新的缓存点,有则更新(或者可以先判断一下是否已经更新失败,失败的原因等等操作)……

0
雷志伟
雷志伟
我的方法是直接把对应缓存的内容删除掉.
客户端读取不到缓存内容, 自动去读数据库,同时把新内容更新进缓存.

优点: 逻辑简单, 因为只有客户端才知道它需要什么样格式的缓存.
缺点: 如果并发数高, 很容易对数据库造成压力.
0
十一文
十一文

引用来自“红薯”的答案

缓存连接不上,是类似 memcached 的缓存服务器?
对 想听听红薯老大的说法
0
十一文
十一文

引用来自“红薯”的答案

缓存连接不上,是类似 memcached 的缓存服务器?

也就是说 这个时候 缓存服务器忙 或者说缓存服务器挂掉了

 

这样的话 数据就不一致了

 

下次别的程序访问的时候 可能访问的是历史上的数据 这种情况怎么办?

0
红薯
红薯

如果真发生这种情况也就只能像 @dy810810 说的,手动去清除或者更新缓存了。

不过你可能要想想,缓存服务器是非常重要的一个服务,怎么会出现缓存服务器忙或者挂掉的这种情况。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部