Предполагая, что вы хотите использовать Memcached в качестве слоя кэширования, вы, вероятно, будете рады узнать, что архитектура кэширования Rails уже поддерживает хранилище Memcached.
Просто настройте его в файле application.rb
(при условии, что вы используете Rails 3):
module MyApp
class Application < Rails::Application
config.cache_store = :dalli_store
end
end
Здесь я использую :dalli_store
, предоставляемый Dalli gem , высокопроизводительным клиентом Memcached. Rails поставляется со стандартным :memcached
магазином, так что вы можете использовать его, если хотите.
Затем, после настройки, вы можете получить доступ к слою кэша, используя Rails.cache
.
Rails.cache.write
Rails.cache.read
Rails.cache.fetch
Rails.cache.delete
Например, допустим, вы хотите кэшировать дорогой запрос ActiveRecord.
class Post < ActiveRecord::Base
def expensive_query
Rails.cache.fetch("posts/expensive_query") do
where("1 = 1").all
end
end
end
В первый раз, когда кеш недоступен, #fetch
выполнит содержимое блока и кеширует его. Позже кеш будет просто возвращен.