Scala/Play:将数据保存在单例中是否安全?
问题描述:
就像在基本的hello world玩!应用程序,你可以这样做:Scala/Play:将数据保存在单例中是否安全?
object Application extends Controller {
var ak = 0
import views.Application._
def index = {
ak = ak + 1
html.index("Your Scala application is ready!" + ak)
}
}
而且每次刷新页面,该数目的增量。有谁知道这种行为是我可以信赖的,还是我应该完全避免的?似乎我可以用它来做一些简单的计算的本地缓存,同时避免将数据序列化/传输到memcached
答
由于Play!被设计成一个无状态 webframework我不会依赖Controller生命周期来处理这种状态。
容器极有可能会停止并重新启动控制器,特别是在云基础架构上。
你应该认真研究一下替代方案(就像你提到的memcached一样)。
检查部分“会议和Flash的作用域”页(显示缓存一些设施):
http://www.playframework.org/documentation/1.1.1/controllers
我觉得从不同的线程递增变量这样的时候还可以存在竞争条件。 – Sonson123 2015-05-02 18:03:36