我正在使用Ruby on Rails,我需要存储通过连接到另一台服务器获得的搜索结果集。问题是我不想将结果集存储在会话中,我想要一些可以将结果集对象存储在多个请求中的东西。
查询需要时间,所以我不想重复它。有没有办法存储对象或缓存对象,这样我就不必一次又一次地查询它?
可以使用某种对象存储吗?
任何帮助都会很棒。
如果记忆是一个选项,我该如何记忆对象?连接仍然需要时间,以便如何存储结果集。
答案 0 :(得分:1)
如果您不想将其存储在会话中,显然您可以在此处选择。
您可以暂时存储在您的数据库中(我假设查询数据库比从另一台服务器重新获取更快:))。
还有一个选项可以使用像memcached这样的东西。虽然您必须知道重新启动它会丢弃所有数据。
取决于您需要实现的目标以及处理数据的方式。
答案 1 :(得分:1)
备忘录仅适用于单个请求。不能在多个请求中使用。
所有请求都包含Memcache或BDD等所有存储资源。如果您使用ActiveSupport::Cache::MemCacheStore。您可以在所有请求中推送和获取所有对象。
答案 2 :(得分:1)
如果您需要在请求之间存储数据,那么memoization可能不是您想要的。当您在单个请求中重复调用相同的方法时,通常在Ruby / Rails中使用Memoization,并且该方法很昂贵(CPU密集型,多个DB请求等)。
您可以记住将结果存储在实例变量中的方法,并在下次调用时返回实例变量值,而不是重新评估方法。如果你想进一步研究它,那里有大量的资源。
对于需要跨会话持久化的数据,可能需要在不同用户之间共享,我强烈建议使用memcached。 Rails有一些内置支持,因此挖掘一些好的资源应该不会太难。