Хранение в памяти Nodejs

Как хранить данные, которые будут использоваться всеми клиентами на моем сервере? (например, сообщения чата)


person Community    schedule 08.02.2010    source источник


Ответы (5)


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

var sys  = require('sys'),
    http = require('http');

var number = 0;

http.createServer(function (req, res) {
        console.log(req.method, req.url);

        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write('<h1>Number is: ' + number + '</h1>');
        res.end();

        number++;

}).listen(8000);

sys.puts('Server running at http://127.0.0.1:8000/');
person Ionuț G. Stan    schedule 08.02.2010
comment
Этот пример показывает мне: число равно 0, число равно 2, число равно 4, число равно 6 и т. д. очень и очень достоверно. Никто больше не в гостях. Хостинг на nodester.com. Есть идеи, что это значит?! - person Thomas David Baker; 19.04.2011
comment
@Thomas Дэвид Бейкер, да, браузер делает дополнительный запрос для favicon.ico. Я изменил фрагмент, чтобы он поддерживал последнюю версию узла и регистрировал метод запроса и URL-адрес в консоли. Взгляните сейчас. Он должен показывать что-то вроде GET /favicon.ico между каждым другим запросом. - person Ionuț G. Stan; 19.04.2011
comment
Сколько состояний сохранится? Есть ли значение, которое я могу установить для него? - person user482594; 27.09.2011
comment
Будьте осторожны, используя этот пример при запуске приложения в кластере. Поскольку переменные приложения являются локальными для вашего приложения, вы не можете поддерживать состояния в кластерах приложений. - person jwerre; 16.07.2018

Пакет node-cache в настоящее время лучше всего подходит для хранения значений ключей и позволяет как синхронное, так и асинхронное хранение/извлечение/удаление ключей.

ссылка на npm

person iajnr    schedule 16.12.2015

Если вам нужны дополнительные функции, посмотрите redis-node-client.

person Bharani    schedule 02.03.2010

Или используйте собственный механизм хранения узлов (написанный в node.js)

http://github.com/felixge/node-dirty

person christkv    schedule 14.03.2010

Для этой цели я написал Bx; он дает вам простой кеш в памяти с:

  • Хранилище ключей-значений
  • Необязательный истечение срока действия любых сохраненных данных
  • Поддержка схем с использованием JSON-схемы

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

Однако, если вы храните данные, которые должны быть постоянными, вам понадобится база данных, такая как MongoDB (с Mongoose), MySQL и т. д., а не кэш, например Bx или Redis.

person tylucaskelley    schedule 11.04.2016
comment
в репозитории нет примеров и сайт недоступен - person Tony; 14.09.2017