2015-11-12 117 views
0

我有一个情况,我有一个来自另一个服务器的帖子休息请求查询客户信息,包括UID和其他信息,如客户ID.After与客户信息的响应后,我得到第二个请求与相同的UID向同一客户请求付款。我想缓存这个UID和第一个请求中的其他信息,以便能够识别哪个第二个请求属于哪个客户。缓存休息请求

任何人都可以帮我使用球衣来实现这种情况吗?

+0

请尝试自己尝试解决问题,然后将问题发布到您有任何具体问题的问题上。我们不提供完整的解决方案或代码块。 – EkcenierK

+0

你不应该在REST中这样做。请求应该有正确处理它的所有信息。 –

+0

我知道了,但我必须在第一次请求中计算此客户的最低付款金额,然后在处理第二次付款请求之前将其发回,而且通过网络发送两次相同的信息会产生开销。此外,除非第二个请求成功,否则不想保存来自第一个请求的信息。 – yehia

回答

0

正如佩德罗所述,每个请求应包含处理请求所需的所有数据。

如果两个请求都包含UID并且UID可以使用一个密钥,那么基于UID缓存客户信息(性能考虑可能?)是可以接受的。但这是一个纯粹的缓存问题,而不是泽西岛问题。

例如,如果客户信息是使用JPA获取的,则二级缓存可以缓存该信息。

如果通过其他方式获取信息,请考虑使用Guava Cache。 https://github.com/google/guava/wiki/CachesExplained

您可以手动添加到缓存(使用缓存“asMap”)或使用缓存加载器。它将加载并返回缓存中不可用的数据,或者在高速缓存中可用时将其从缓存中返回。

番石榴缓存中包含所有类型的好东西:大小的逐出,基于时间的驱逐等

番石榴缓存使用方便,轻巧和生产准备。您可以轻松地将Cache实例封装到单例中,并通过请求共享。

+0

谢谢@filipd,我使用的是Spring Data JPA,我不想多次访问数据库,同时也不想保存来自第一个请求的信息,除非获得并成功响应第二个请求。所以,我想暂时保存从第一个请求旁边的数据库获取信息。 – yehia