Caching 存储富对象时使缓存技术无效

Caching 存储富对象时使缓存技术无效,caching,Caching,有时,您会将整个对象图存储到缓存中,或者将具有集合的对象存储到缓存中,这会使缓存失效变得有点棘手 有什么技术可以知道何时使缓存无效 对于简单对象,您可以在更新/保存对象时使其无效,您只需进行额外调用并刷新缓存即可 当您拥有丰富的对象时,例如: User Locations Sales History 现在,每当用户属性或位置/销售/历史收集数据发生变化时,此用户对象将变为“脏” 我认为一个简单的方法是更新用户对象的“modified_date”属性,并可能将修改的_date保留为缓

有时,您会将整个对象图存储到缓存中,或者将具有集合的对象存储到缓存中,这会使缓存失效变得有点棘手

有什么技术可以知道何时使缓存无效

对于简单对象,您可以在更新/保存对象时使其无效,您只需进行额外调用并刷新缓存即可

当您拥有丰富的对象时,例如:

User
  Locations
  Sales
  History
现在,每当用户属性或位置/销售/历史收集数据发生变化时,此用户对象将变为“脏”

我认为一个简单的方法是更新用户对象的“modified_date”属性,并可能将修改的_date保留为缓存键的一部分,然后调用以获取用户行,然后进行比较,然后根据键中修改的_date从缓存中提取对象图:

user_cache_key + user.id + user.modified_date
这种方法的唯一问题是,无论何时更新任何对象依赖项,都必须确保更新“修改的_日期”


这个问题还有其他可能的解决方案吗?

您解决了吗?这正是我所想的。我不修改键,而是使用值存储
有效性
时间。还有一个
invalidate
时间,
invalidate>validity
表示条目已过时。
用户的
失效时间
递归计算为其自身和所有贡献者的最大值(
位置
等)。我还没有真正试过。