Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:在服务器的内存中缓存树_Ruby On Rails_Caching_Optimization - Fatal编程技术网

Ruby on rails Rails:在服务器的内存中缓存树

Ruby on rails Rails:在服务器的内存中缓存树,ruby-on-rails,caching,optimization,Ruby On Rails,Caching,Optimization,我有一个包含多维数据的postgresql数据库。我所做的是编写一个数据结构,将所有数据库行排序为树格式。现在数据库很大,所以我不想每次从浏览器收到请求时都生成树。我想做的是在特定的时间段内构造一次树,并将其保存在服务器的内存中 顺便说一下,这棵树是只读的。因此,现在每次请求出现在树中时,都不需要生成新的请求,因为它已经存在了 我怎样才能做到这一点。我不是一个专业的程序员,只是一个初学者,对网络编程来说绝对是个新手。所以其中一些概念对我来说是新的 但是如果你能给我指出这里涉及的概念的正确方向,我

我有一个包含多维数据的postgresql数据库。我所做的是编写一个数据结构,将所有数据库行排序为树格式。现在数据库很大,所以我不想每次从浏览器收到请求时都生成树。我想做的是在特定的时间段内构造一次树,并将其保存在服务器的内存中

顺便说一下,这棵树是只读的。因此,现在每次请求出现在树中时,都不需要生成新的请求,因为它已经存在了

我怎样才能做到这一点。我不是一个专业的程序员,只是一个初学者,对网络编程来说绝对是个新手。所以其中一些概念对我来说是新的

但是如果你能给我指出这里涉及的概念的正确方向,我可以用谷歌搜索剩下的

或者,如果你有实际的链接或例子,那就太棒了


谢谢

有几种方法可以解决这个问题。这取决于变量与应用程序的距离。如果您真的希望将它们放在应用程序的“顶部”,以便尽可能快地使用,那么您可以考虑使用全局变量“$tree”并连接到应用程序流。其他选项可能包括,这仍然非常接近应用程序。对于可以在应用程序实例之间共享的内存中数据库来说,这是一个不错的选择,因为您查询的是NoSQL数据库。但与应用程序不太接近


一般来说,这些是你的主要选择。在请求后仍然存在的应用程序变量中。应用程序框架将帮助变量在请求中生存,并为您提供查询机制。或者,一个内存中的数据库,允许您快速存储和查询多个实例。每一种都是可行的选择,尽管我很肯定你会因为使用一个直接的全局变量而受到很多“社区”的抨击(这种做法被认为是不干净的,因为它们缺乏线程安全性和其他类似的问题)。

这个railcast应该很好地解释你在这个案例中可以做什么