grails - 将对象状态保存在 RAM 中而不持久化数据

标签 grails

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

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

代码需要三个 Groovy 类:Game , GridCell .

我可以通过创建持久化所有游戏、网格和单元格数据的域类来制作这个游戏。但是我认为 网格数据非常不稳定并且仅仅保存几秒钟的网格状态并不是很有用。

我的问题是,如果我不想保留网格和单元格但仍可以访问它们的对象怎么办? Grails可以吗?

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

  • Web 应用程序,其中向用户显示的动态数据始终存储在数据库中,
  • 桌面应用程序,其中动态数据可以作为未持久保存到数据库中的对象在 RAM 中等待。

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

    最佳答案

    您可以使用 grails session 持久化您的对象:

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

    通常,大多数 Web 框架使用 session 来存储每个用户的数据。 grails 默认使用内存。开箱即用,您可以将其替换为基于 cookie 或数据库的存储。

    如果您需要在用户之间共享状态,那么您可以将数据存储在 servletContext 中,它在您的所有 Controller 中都可用。这为您提供了一个存储全局变量的地方。一堆哈希表应该可以满足您的需求。

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

    如果您想要简单的持久性,请考虑使用类似 enhcache 的东西,http://Enhcache.org这使您可以很容易地将缓存持久化到磁盘。

    关于grails - 将对象状态保存在 RAM 中而不持久化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651008/

    相关文章:

    mysql - 在 GRAILS 中搜索 BLOB 内容

    grails - grails独特的投影获取不同项目的结果计数

    sql-server - Grails:如何在SQL数据库中保存java.sql.Time类型

    grails - 如何在Grails中读取xml文件?

    grails - Grails,从Controller(甚至Servlet)获取InputStream

    testing - 我如何确定 Grails 应用程序是否在测试中?

    apache - Tomcat 到 Grails 中的 Apache 代理/URL 子目录

    grails - 将Grails升级到1.3.7,需要故障排除帮助

    grails - 如何在 Grails 中通过过滤器查询所有用户的 LDAP?

    Grails从ApplicationResources.groovy从WebServer提供静态内容