2010-10-20 2 views
2

С RoR у вас есть модель, контроллер и вид.С RoR, какое самое лучшее место/слой для входа в вашу учетную запись для memcache?

Модель имеет как свойства класса и т.д., а также код доступа к БД смешались в.

В контроллерах, вы используете свои модели для извлечения определенных данных, чтобы подтолкнуть ваши мнения.

В мире Java у вас будет DAO для каждого объекта, а затем слой «Сервис», где вы можете решить вытащить объект из кеша или извлечения из вашего DAO.

Что делают люди Rails?

ответ

4

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

Смежные вопросы