2015-07-16 4 views
1

Я использую Rails.cache.write и Rails.cache.read для хранения некоторых объектов activerecord, но это не работает workinkg.Rails 3.2 cache not working

posts = Post.find(...) 
Rails.cache.write(myKey, posts) 

... next request... 

foo = Rails.cache.read(myKey) 

Несмотря на то, что переменная foo правильно заполнена, это генерирует те же журналы sql. Если я изменю базу данных во время «...», я получил результаты новостей.

Что может случиться?

ответ

2

Рекомендуется кэшировать сериализованные данные (только результаты), а не объект ActiveRecord со своим собственным именем класса и идентификатором отдельного объекта.

Fetch technique также является предпочтительным

Rails.cache.fetch(myKes) do 
    Post.find(...).as_json 
end 
0

Попробуйте это. он истечет через 30 секунд.

Rails.cache.fetch("posts_for_#{myKey}", expires_in: 30.seconds) do 
    posts = Post.find(...) 
    posts 
end 

Поместите это в какой-то метод и передайте этот метод myKey и ... для сообщений, и он должен работать. он вернется из кеша, если существует запрос else на нем