Я использую Ruby on Rails, и я должен сохранить набор результата поиска, полученный путем соединения с другим сервером. Проблема, я не хочу хранить набор результатов на сессии, и я хочу что-то, где я могу хранить объект набора результатов по нескольким запросам.
Запросы занимают время так, я не хочу повторять его. Существует ли способ, которым я мог хранить объекты или объекты кэша так, чтобы я не запрашивал его снова и снова?
Может использовать некоторую объектно-ориентированную память?
Любая справка была бы большой.
Если memoizing является опцией, как делают меня объекты memoize? Соединение все еще заняло бы время поэтому, как сохранить набор результатов.
Если вы не хотите сохранять его в сеансе, очевидно, у вас есть здесь варианты.
Вы можете временно сохранить в своей БД (я предполагаю, что запрос к БД выполняется быстрее, чем повторная выборка с другого сервера :)).
Также есть возможность использовать что-то вроде memcached. Хотя вы должны знать, что его перезапуск приведет к потере всех ваших данных.
Зависит от того, чего вам нужно достичь и как вам нужно обрабатывать свои данные.
Мемоизация работает только в одном запросе. Нельзя использовать в нескольких запросах.
У всех запросов есть все ресурсы хранения, такие как Memcache или BDD .. Если вы используете ActiveSupport :: Cache :: MemCacheStore . вы можете нажать и получить все объекты во всем своем запросе.
Если вам нужно хранить данные между запросами, мемоизация, скорее всего, не то, что вы ищете. Мемоизация обычно используется в Ruby/Rails, когда вы вызываете один и тот же метод несколько раз в рамках одного запроса, и этот метод является дорогостоящим (либо требует больших затрат процессора, либо многократных запросов к БД и т.д.).
Вы можете мемоизировать метод, который сохраняет результат в переменной экземпляра, и при следующем вызове возвращается значение переменной экземпляра, а не повторная оценка метода. Существует масса ресурсов по этому вопросу, если вы хотите изучить его подробнее.
Для данных, которые должны сохраняться в течение нескольких сессий и могут быть доступны разным пользователям, я настоятельно рекомендую memcached. Rails имеет встроенную поддержку для этого, поэтому не составит труда найти несколько хороших ресурсов.