С RoR, какое место / слой лучше всего использовать для входа в memcache? - PullRequest
2 голосов
/ 20 октября 2010

С RoR у вас есть модель, контроллер и вид.

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

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

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

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

1 Ответ

4 голосов
/ 20 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...