但是可能出现这种情况
数据已经跟新到数据库
但是这时候缓存连接不上了
这种情况可能导致缓存和数据库的不一致
这中情况怎么避免啊?
手动更新,定点清除都可以。
这个能不能这样做:
为了避免在更新缓存时,发生错误而导致缓存不一致,自己做一个缓存更新的列表,数据库更新时,把需要更新的缓存点同时放到列表里,然后更新缓存,成功则出列,不成功则标记,同时做一个定时访问这个列表里是否有需要更新的缓存点,有则更新(或者可以先判断一下是否已经更新失败,失败的原因等等操作)……
也就是说 这个时候 缓存服务器忙 或者说缓存服务器挂掉了
这样的话 数据就不一致了
下次别的程序访问的时候 可能访问的是历史上的数据 这种情况怎么办?
如果真发生这种情况也就只能像 @dy810810 说的,手动去清除或者更新缓存了。
不过你可能要想想,缓存服务器是非常重要的一个服务,怎么会出现缓存服务器忙或者挂掉的这种情况。
手动更新,定点清除都可以。
这个能不能这样做:
为了避免在更新缓存时,发生错误而导致缓存不一致,自己做一个缓存更新的列表,数据库更新时,把需要更新的缓存点同时放到列表里,然后更新缓存,成功则出列,不成功则标记,同时做一个定时访问这个列表里是否有需要更新的缓存点,有则更新(或者可以先判断一下是否已经更新失败,失败的原因等等操作)……
客户端读取不到缓存内容, 自动去读数据库,同时把新内容更新进缓存.
优点: 逻辑简单, 因为只有客户端才知道它需要什么样格式的缓存.
缺点: 如果并发数高, 很容易对数据库造成压力.
引用来自“红薯”的答案
引用来自“红薯”的答案
也就是说 这个时候 缓存服务器忙 或者说缓存服务器挂掉了
这样的话 数据就不一致了
下次别的程序访问的时候 可能访问的是历史上的数据 这种情况怎么办?
如果真发生这种情况也就只能像 @dy810810 说的,手动去清除或者更新缓存了。
不过你可能要想想,缓存服务器是非常重要的一个服务,怎么会出现缓存服务器忙或者挂掉的这种情况。