使用Octopus gem和Rails SQL Caching

时间:2012-06-26 03:56:40

标签: ruby-on-rails ruby-on-rails-3 caching octopus

我们在rails应用程序中使用章鱼将读取查询直接转发到我们的从属框,并写入我们的主人。不得不说它是一个伟大的宝石,但我们注意到对奴隶的查询放弃了Active Record的默认SQL缓存。有点失败的目的是水平扩展数据库服务器,只会失去有助于扩展的缓存层。

有没有人知道如何解决这个问题,或者是否有更好的宝石可供使用。我们不需要章鱼提供的分片功能;只是复制。

提前谢谢

1 个答案:

答案 0 :(得分:0)

为连接启用SQL缓存的方法是执行类似

的操作
ActiveRecord::Base.connection.cache do
    # the query cache is used here
end
# and turned off by here

对于主要的activerecord连接,rails有一个机架中间件,可以为每个请求设置它。如果您希望这种情况发生在您的从属连接上,那么您需要自己做类似的事情来为您的第二个连接启用缓存(比机架中间件稍微容易around_filter

我对章鱼不太熟悉,但似乎这两个连接可能是独立的 - activerecord不会因为你在其他连接上做了一些写操作而知道在读连接上使其缓存无效< / p>