Как кэшироваться, объекты хранят их для нескольких запросов?

Я использую Ruby on Rails, и я должен сохранить набор результата поиска, полученный путем соединения с другим сервером. Проблема, я не хочу хранить набор результатов на сессии, и я хочу что-то, где я могу хранить объект набора результатов по нескольким запросам.

Запросы занимают время так, я не хочу повторять его. Существует ли способ, которым я мог хранить объекты или объекты кэша так, чтобы я не запрашивал его снова и снова?

Может использовать некоторую объектно-ориентированную память?

Любая справка была бы большой.

Если memoizing является опцией, как делают меня объекты memoize? Соединение все еще заняло бы время поэтому, как сохранить набор результатов.

5
задан John Topley 10 March 2010 в 12:21
поделиться

3 ответа

Если вы не хотите сохранять его в сеансе, очевидно, у вас есть здесь варианты.

Вы можете временно сохранить в своей БД (я предполагаю, что запрос к БД выполняется быстрее, чем повторная выборка с другого сервера :)).

Также есть возможность использовать что-то вроде memcached. Хотя вы должны знать, что его перезапуск приведет к потере всех ваших данных.

Зависит от того, чего вам нужно достичь и как вам нужно обрабатывать свои данные.

1
ответ дан 15 December 2019 в 06:23
поделиться

Мемоизация работает только в одном запросе. Нельзя использовать в нескольких запросах.

У всех запросов есть все ресурсы хранения, такие как Memcache или BDD .. Если вы используете ActiveSupport :: Cache :: MemCacheStore . вы можете нажать и получить все объекты во всем своем запросе.

1
ответ дан 15 December 2019 в 06:23
поделиться

Если вам нужно хранить данные между запросами, мемоизация, скорее всего, не то, что вы ищете. Мемоизация обычно используется в Ruby/Rails, когда вы вызываете один и тот же метод несколько раз в рамках одного запроса, и этот метод является дорогостоящим (либо требует больших затрат процессора, либо многократных запросов к БД и т.д.).

Вы можете мемоизировать метод, который сохраняет результат в переменной экземпляра, и при следующем вызове возвращается значение переменной экземпляра, а не повторная оценка метода. Существует масса ресурсов по этому вопросу, если вы хотите изучить его подробнее.

Для данных, которые должны сохраняться в течение нескольких сессий и могут быть доступны разным пользователям, я настоятельно рекомендую memcached. Rails имеет встроенную поддержку для этого, поэтому не составит труда найти несколько хороших ресурсов.

1
ответ дан 15 December 2019 в 06:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: