在rails中拥有持久内存中哈希的最佳方法是什么?

时间:2015-10-28 16:56:00

标签: mysql ruby-on-rails ruby hash in-memory-database

假设我有一个包含100000个城市(id,city)的表格,我的应用程序的布局方式是我需要id->城市映射进行多次搜索。为每个此类转换运行SQL记录是禁止的。假设搜索结果页面显示1000条记录,我不想在现有查询的基础上添加1000条SQL查询。

我已经阅读过热切的加载原语(:includes),但这并不完全符合我的需要。我希望这张包含10万个城市的桌子驻留在记忆中。目前我正试图避免像redis这样的东西来避免一个依赖。

当rails / passenger启动时,我是否可以在此哈希表中推送共享内存区域,然后所有传入请求都可以从那里查找此持久哈希。

我相信如果我在我的application_controller中创建这样的哈希值,那么每次请求进入时都会初始化这个哈希值,这会使事情变得比我现在的更糟糕(或者不会?)

实例化所有请求可共享的共享持久内存的rails方式是什么?

1 个答案:

答案 0 :(得分:0)

听起来你需要缓存,你只是想避免使用外部服务器。我已经使用Rails的内置内存缓存解决方案进行全局有效的大型计算,但我不想为外部缓存进行往返。

在您的环境中使用并调整此设置。 'children' => array( $obj1, $obj2, ),

当然,Rails Caching Guide包含所有细节。