Говорят, что хранилища значений ключей лучше хранить постоянных данных по сравнению с реляционными базами данных, а не с непостоянными объектами в памяти.
Но я подозреваю, что база данных ключ-значение имеет преимущества по сравнению с объектными переменными, даже если постоянство не является необходимым. Они могут быть разделены между приложениями и могут сэкономить потребление памяти. Даже Redis, который хранит все значения в памяти, может сохранить вашу память с вашего сервера application , поскольку его можно перенести на другой сервер при использовании большого количества гигабайт.
Кроме того, совместно используемый объект в памяти становится сложным для поддержания с течением времени. Если вы решите использовать его, я рекомендую вам абстрагироваться от его характера. В вашем коде есть объект, где вы просто делаете что-то подобное:
var storage = new Storage();
storage.registerClientDisconnection("client_id_1");
Тогда ваш Storage.registerClientDisconnection()
может быть либо
Storage.proptotype.registerClientDisconnection = function(clientId) {
this.info[clientId].connected = false;
};
или
Storage.proptotype.registerClientDisconnection = function(clientId) {
var client = redis.createClient();
client.set("clientId:"+clientId+":connected", false);
};
Подводя итог: я бы порекомендовал использовать хранилище значений ключей, но держу пари, что вы также можете использовать хранилище некоторых объектов. Однако, если вы решите использовать объект в памяти, просто абстрагируйте эту деталь реализации, чтобы вы могли легко перейти к реализации хранилища значения ключа в будущем. Абстрагирование вашего решения кажется более важным, чем ваше решение о реализации.