Предполагая, что вы хотите использовать 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
выполнит содержимое блока и кэшировать его. Позже кеш будет просто возвращен.