我正在尝试理解Simple Spring Memcached,但一直坚持下面提到的。
有什么区别:
此外,更新如何运作。如果我使用某个键对命名空间进行更新,它是否会在同一命名空间中执行所有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更新。
答案 0 :(得分:1)
有3组缓存注释取决于处理密钥的数量:
在SSM中,应用程序1和应用程序2之间没有直接通信。为了使其正常工作,两个应用程序都必须使用相同的Simple Spring Memcached配置,包括memcached服务器和提供程序配置,以便它们使用相同的memcached服务器。应用程序可以部署在独立的服务器上。 当一个应用程序把一键分布式缓存使用的 ReadThroughSingleCache 或 UpdateThroughSingleCache 的另一个可以同时使用 ReadThroughSingleCache 访问它。 更新方法的签名应该是使用方法参数作为新值:
@UpdateThroughSingleCache(namespace="userPoints")
public void updateUserPoints(@ParameterKeyValueProvider String userId, @ParameterDataUpdateContent Integer newPoints)
{
//make database update
}
如果要使用返回值更新使用 @ReturnDataUpdateContent注释方法。