Я создал небольшое приложение с NodeJS и Hapi. Есть некоторые данные, которые должны храниться в памяти до тех пор, пока приложение работает. Например, наша компания ведет список «заблокированных слов» в базе данных.
Что я хочу:
Когда приложение запускается, мы выбираем эти данные из базы данных, а затем сохраняем данные в глобальной переменной. Мы никогда не попадаем в базу данных снова. Мы предполагаем, что это приложение будет перезапущено каждую неделю или две.
Мой страх:
Если бы это было PHP-приложение, оно делало бы этот запрос к базе данных каждый раз при загрузке страницы. Я должен был бы использовать что-то вроде Memcache для хранения данных. В противном случае я буду злоупотреблять базой данных сотнями дополнительных звонков каждую минуту.
Мой идеал:
Если бы я мог использовать Java или Clojure, было бы тривиально легко загрузить данные при запуске и затем хранить их в памяти до тех пор, пока приложение работает.
Итак, за какой моделью следует NodeJS? PHP или Clojure?
Приложение вашего узла имеет постоянные данные в памяти, начиная с момента загрузки и заканчивая уничтожением. Вы можете хранить данные в глобальной переменной, и она будет сохраняться между соединениями.
Вы можете легко подтвердить это, объявив переменную, увеличивая ее каждый раз, когда запрос поступает в ваше приложение, и регистрируя результат:
let counter = 0;
const server = require('http').createServer((req, res) => {
counter++;
res.statusCode = 200;
res.end(counter.toString());
console.log(counter);
});
server.listen(3000);
Примечание. Этот пример будет увеличиваться в два раза при каждом запросе при использовании браузера, который запрашивает
favicon
,
Других решений пока нет …