【发布时间】:2013-07-15 16:44:14
【问题描述】:
我正在尝试理解 Simple Spring Memcached,但一直坚持下面提到的。
有什么区别:
- @ReadThroughSingleCache、@ReadThroughMultiCache 和 @ReadThroughAssignCache
- @UpdateSingleCache、@UpdateMultiCache 和@UpdateAssignCache
- @InvalidateSingleCache、@InvalidateMultiCache 和 @InvalidateAssignCache
还有更新是如何工作的。如果我使用某个键对命名空间进行更新,它是否会执行同一命名空间中的所有 read*cache 方法并使用相同的键。 如果是,那么它是否适用于多个服务器应用程序。
例如,在某个场景中,用户的积分(对于某事)被缓存 应用1
@ReadThroughSingleCache(namespace="userPoints")
public Integer getUserPoints(@ParamterKeyValueProvide String userId){
}
在另一个应用程序(可能是后台调度程序)的另一个场景中,调用以下方法: 应用二
UpdateThroughSingleCache(namespace="userPoints")
public void updateUserPoints(@ParameterKeyValueProvider String userId, Integer newPoints)
{
//make database update
}
我的问题是,如果命名空间(“userPoints”)最初有一个 userId(“1234”)的缓存条目为 50 点 并且使用 ("1234",100) 调用更新方法,缓存如何知道“1234”条目必须更新 100 个点的逻辑。
它应该使用返回值并用旧值更新它(然后需要更改返回类型)或 如果更新是“直写”,则应使用 db 查找的直接逻辑调用 read 方法,然后更新缓存...但是应用程序 2 如何通知应用程序 1 更新。
【问题讨论】:
标签: caching memcached distributed-caching distributed-cache simple-spring-memcached