Скажите, что у меня есть таблица из 100 000 городов (id, city), и мое приложение выложено таким образом, что мне требуется сопоставление городов id-> city для многих поисков. Запуск записи SQL для каждого такого перевода запрещен. Скажем, страница результатов поиска отображает 1000 записей, я не хочу добавлять 1000 SQL-запросов поверх существующего запроса.Лучший способ иметь постоянный хэш в памяти в рельсах?
Я читал о загружаемом примитиве (включает:), и это не соответствует моей потребности. Я хочу, чтобы эта таблица из 100 000 городов была в памяти. В настоящее время я пытаюсь избежать чего-то вроде redis, чтобы спасти себя от одной зависимости.
Есть ли разделяемая область памяти, в которой я могу засунуть эту хэш-таблицу при запуске рельсов/пассажиров, а затем все входящие запросы могут найти этот постоянный хэш оттуда.
Я считаю, что если я создаю такой хэш в моей application_controller, этот хэш будет инициализирован каждый раз, когда приходит запрос, в котором будет еще хуже, чем то, что у меня есть сейчас (или это не?)
Что такое рельсы способ создания общей постоянной памяти, которую могут использовать все запросы?
Любой сервер кеша с достаточным пространством для хранения. Если не Redis, есть memcached. В любом случае вам понадобится какое-то кэширование. –
Рельсы не являются местом для кэширования этой информации. Сделайте это с помощью отдельного сервера, предназначенного для этого. Избегайте зависимостей, когда эти вещи предназначены для того, чтобы делать то, что вам нужно, не является хорошим использованием вашего времени или ваших ресурсов. Выбирайте и выбирайте разумно, вместо того, чтобы произвольно избегать чего-то просто, потому что это «не было изобретено здесь», а это то, что вы делаете. –
The Tin Man - Я не согласен с этим утверждением. Я думаю, вы хотели бы рассмотреть вопрос о том, является ли добавление внешней зависимости (и необходимых операционных издержек) хорошим использованием вашего времени или нет. Если это тривиальный набор данных относительно его доступной памяти, то использование в хранилище памяти будет соответствовать его потребностям. –