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