缓存同步问题

当你有多台服务器的时候需要用memcache做数据缓存,讲面临一个如果缓存的数据发生变化更新缓存的问题。
缓存的的存储,是前台项目应用,而变更数据是在后台,这是两个独立的项目,当你的缓存存储的是对象,那么在后台变更数据的时候是无法delete掉缓存的数据的,在delete的时候会去查找这个对象在后台项目中是没有这个对象的定义的,所以是无法清理掉的。
  
对于对象无法清理掉,所以可以选择把对象序列化成字符串(例如Json),这样就可以在后台,直接清理了。
对于那些是对象的缓存,可以把这个对象存储在一个内存里(静态的变量),然后在memcache中设置一个字符串的表示,当字符串的标识,发生变化的时候,就读取数据库,更新内存中的数据。如果这样做,又会带来一个新的问题如果判断memcache中的标识发生了变化呢,我目前用的一个方法是在内存中在定义一个静态变量,用在存储memcache中的标识,每次在对比对比这两个值来判断是否发生变化,而memcache中的标识是用时间戳表示。

这样每次清理缓存只需要清理memcache中的时间戳表示就可以了。





原文地址:https://www.cnblogs.com/xinxinzhihuo/p/6625238.html