将对象状态保存在RAM中而不保留数据

时间:2015-06-04 18:03:05

标签: grails

我正在使用Grails构建一个小型网页游戏,我觉得我错过了一个重要的概念。

游戏涉及n*n网格。每个玩家通过单击一个单元格来轮流。

代码需要三个Groovy类:GameGridCell

可以通过创建持久保存所有游戏,网格和单元格数据的域类来实现此游戏。但是我认为网格数据非常不稳定并且仅仅几秒钟保存网格状态并不是真正有用。

我的问题是,如果我不希望网格和单元格保持但仍能访问其对象,该怎么办? Grails有可能吗?

换句话说,我习惯于创建:

  • 网络应用程序,其中显示给用户的动态数据始终存储在数据库中,
  • 桌面应用程序,其中动态数据可以在RAM中等待,而不是持久存储在数据库中的对象。

如何创建一个Web应用程序,数据可以在服务器RAM中等待而不保存到数据库中,并且只要用户需要就可以访问它?

1 个答案:

答案 0 :(得分:1)

您可以使用grails会话来保留对象:

http://grails.github.io/grails-doc/2.3.4/ref/Servlet%20API/session.html

通常,大多数Web框架使用会话来存储每个用户数据。 grails的默认值使用内存。开箱即用,你可以用cookie或基于数据库的存储替换它。

如果您需要在用户之间共享状态,那么您可以将数据存储在servletContext上,该文件在所有控制器中都可用。这为您提供了存储全局变量的位置。一堆哈希表应该可以满足您的需求。

在服务器重新启动之间不会保存状态,但如果需要,则可以使用数据库或以其他方式序列化对象。

如果你想要简单的持久性,可以考虑使用像enhcache这样的东西http://Enhcache.org,它允许你很容易地将缓存持久化到磁盘上。