0

我正在做一个项目,我想不时进行 mysql 查询。查询太长,实际上是在用户发出请求时完成的。

恐怕如果有很多用户发出请求,应用程序就会响应太慢。所以,我想不时进行查询并使用查询响应加载它,然后,根据请求,来自控制器的操作将使用此变量,而不是一次又一次地进行查询。

我怎样才能做到这一点,无论何时?

在时间表.rb

every 5.minutes do
    runner "variable = Model.method"
end

在控制器上

def some_action
"the variable should be loaded here"

end
4

1 回答 1

0

我同意 Damien Roche 的观点,您需要缓存查询结果。但是,我不认为他给出的例子对你来说是最好的答案,因为你不希望用户在没有缓存的时候等待查询,在缓存过期的时候,即使这个是一种罕见的情况。因此,您需要将定期查询与任何时候(如您建议的那样)与缓存机制结合起来,以存储您的查询结果,并从控制器的缓存中检索它。由于 runner 是一个不同的进程,因此您必须使用 runner 和您的应用程序都可用的缓存。我建议您查看 Redis。让它工作应该非常简单,以便运行器运行查询,并在完成时将结果集写入 Redis cahce。然后控制器将从缓存中读取结果集。

于 2013-10-24T17:59:56.207 回答