2015-05-19 2 views
0

Наше приложение должно регистрировать действия пользователей довольно часто (10 ~ 15 с), и это может быть довольно тяжелый IO. Поэтому мы не хотим хранить данные в базе данных каждый раз, когда пользователь что-то обновляет, и мы хотим хранить все в памяти (например, массив), а затем хранить их в базе данных, когда память достигает определенного размера. Журнал для нашей цели разные пользователи должны перейти в одну и ту же память.Как хранить данные в памяти в Ruby on Rails

Мы уже сделали кеш на стороне клиента, но мы хотим оптимизировать его дальше на сервере.

Есть ли хороший способ в ROR для этого?

Спасибо!

+1

Определить, где именно «в памяти» есть? В приложении rails - база данных * - это ваша память. –

+2

Взгляните на redis, невероятно быстрый магазин памяти с ключом. –

+0

@TarynEast Привет, здесь я имею в виду RAM – silverwen

ответ

4

Это распространенная проблема. Если вы заинтересованы в кэшировании структур данных, Redis - это громоздкий сервер структуры данных на основе памяти, который обычно используется для облегчения загрузки базы данных на основе дисков. Вот недавняя, по состоянию на 2015 год, статья по этому вопросу. http://www.sitepoint.com/rails-model-caching-redis/

Rails также имеет собственные функции кэш-памяти на основе, если вы не хотите использовать Redis или Memcached: http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-store

+0

Отличный ответ об ошибках! Большое спасибо! Одна вещь, которую я не очень уверен: если я использую кеш-память Rails, ей нужно установить время истечения срока, и пример в документации, похоже, использует этот кеш в основном для кэширования запроса ответа, так что кеш-рельсы подходят для моего случая здесь? (возможно, я пропустил что-то в документации) – silverwen

+0

вы можете поместить что-нибудь в кеш объекта - например, массив значений, который вы затем вытаскиваете и добавляете, а затем кладете обратно в кеш. если он становится достаточно большим, вы можете затем флешировать/сохраняться в db. –

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