首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >播放2.5+和CacheAPI

播放2.5+和CacheAPI
EN

Stack Overflow用户
提问于 2016-08-10 00:09:39
回答 1查看 643关注 0票数 1

我用的是Play 2.5.4。我刚刚开始使用CacheAPI来存储当前登录的用户,因为它在页面请求上需要多次。我通过cache.set()将这个对象添加到缓存中。我把这个做得很好。

问题是,如果我更新此用户对象以具有管理员帐户的不同权限或角色,则需要使该用户的缓存对象失效,以便用户能够获得适当的权限或角色。

如何为用户完成对缓存的更新?我如何在多个web服务器上做到这一点?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-10 14:30:12

如何为用户完成对缓存的更新?

再加一次就行了。假设您使用的是用户id作为密钥

代码语言:javascript
复制
cache.set(user.getId(), user);

我如何在多个web服务器上做到这一点?

这是一个完全不同的问题。Play默认使用EhCache作为缓存提供程序,而Play cache api默认不会创建分布式缓存。

我对EhCache不太了解,但我认为它支持不同产品中的分布式缓存(即多个服务器之间的缓存),而且还支持复制。所以你可能想先调查一下,看看是否适合你。

您还可以创建缓存API的实现,并使用EhCache/Terracota/Memcached/HazelCast提供所需的设置。

另一种选择是使用类似Akka集群/PubSub扩展的内容,并处理缓存失效(即:使服务器1->广播消息中的缓存失效,从而使该缓存失效)。除非您对Akka和PubSub扩展感到满意,否则这可能很难实现。

作为最后的手段,如果您能够负担得起,您只需设置一些短的过期时间(例如:1分钟)缓存。这是最简单的方法,如果您能够负担得起,您的应用程序最多只能看到过期的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38862316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档