如何在Ruby on Rails中将数据存储到内存中

4
我们的应用程序需要经常记录用户的操作(10-15秒),而且这可能会造成很大的IO负担。因此,我们不想在每次用户更新数据时将数据存储到数据库中,我们想要将所有数据存储在内存中(例如一个数组)并在内存达到一定大小时将其存储到数据库中。为了实现我们的目的,不同用户的日志应该被存储在同一个内存中。
我们已经在客户端进行了一些缓存,但我们希望在服务器端进一步优化它。
在 ROR 中有没有好的方法来实现这个呢?
谢谢!

1
定义“内存”具体指什么?在Rails应用程序中,数据库就是您的内存。 - Taryn East
2
看一下 Redis,这是一个非常快速的键值内存存储。 - Martin Konecny
@TarynEast 你好,这里我指的是RAM。 - silverwen
@silverwen 在哪台电脑上?服务器端吗?如果是的话,请参考我上面说的内容。请注意:你可以基本上假设在Rails(或任何服务器端无状态应用程序)中的每个请求之后,RAM 中的任何内容都会被删除,以便 RAM 可以被下一个请求(由另一个人)重用。如果你指的是客户端电脑 - 那就是另一回事了,你必须使用客户端代码(不是 Rails,例如 JavaScript)来在本地客户端的机器上进行任何存储。 - Taryn East
感谢@TarynEast。这是在服务器端的问题。但是频繁查询数据库会带来非常大的IO负载,我们正在尝试将此成本最小化。我们知道RAM不能在请求之间使用,因此我们想知道是否有一些方法可以在请求之间保留RAM。 - silverwen
不可以直接这样做。在请求之间,你不能保留任何未存储在某种数据存储中的内容。数据库是其中一种选择...redis或memcached则是另外两个更快的选项(它们可以与你的数据库一起使用,因此你可以同时拥有两者)。但你不能直接将东西存储在内存中并使用它——这是行不通的。 - Taryn East
1个回答

7

非常好的答案勘误!非常感谢!有一件事我不是很确定:如果我使用Rails缓存,它需要设置一个过期时间,并且文档中的示例似乎主要用于缓存请求响应,那么Rails缓存是否适合我的情况?(也许我在文档中漏掉了什么) - silverwen
你可以将任何东西放入对象缓存中,例如值数组,然后将其取出并添加,再放回缓存。如果它变得足够大,那么你可以将其刷新/持久化到数据库中。 - Taryn East

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接