Vert.x Эквивалент глобального объекта Node.js

В Node.js вы можете назначать значения клавишам глобального объекта. Это дает вам возможность «запоминать» что-то между запросами. Предполагая, что процесс node.js не умирает/зависает и не перезапускается таким процессом, как iisnode.

Есть ли у Vert.x аналог? По сути, я ищу максимально простой кеш для фрагмента данных, чтобы мне не приходилось извлекать его при каждом запросе. Я предполагаю, что решение Vert.x может работать в нескольких потоках?


person BuddyJoe    schedule 05.05.2014    source источник
comment
Вы имеете в виду как это. Я не знаю, что вы имеете в виду под "между потоками".   -  person user568109    schedule 06.05.2014
comment
Да, это сработает для простых типов данных. Обнаружено, что он ломается, если вы пытаетесь добавить {{id:1,name:Yahoo},{id:2,name:Google}} через язык JavaScript.   -  person BuddyJoe    schedule 06.05.2014
comment
Из документа: vert.x позволяет использовать в общих данных только простые неизменяемые типы, такие как число, логическое значение и строка или буфер. Итак, вы добавили это как строку JSON (должно быть в порядке) или как объект JS (должно произойти сбой)?   -  person David Dossot    schedule 07.05.2014
comment
Я никогда не использовал его как объект, но я предполагаю, что он потерпит неудачу. Вы видите, что в JS объекты могут использоваться по их ссылкам (не полностью). См. здесь. Это создает риск — что, если какая-то вершина изменит его. Поскольку вы ничего не можете сделать для предотвращения мутаций, лучше их не допускать.   -  person user568109    schedule 07.05.2014


Ответы (1)


код:

   {{id:1,name:"Yahoo"},{id:2,name:"Google"}} 

перерыв, потому что это недействительный json, вы можете использовать

{companies : [{id:1,name:"Yahoo"},{id:2,name:"Google"}]} //заметьте, что они находятся внутри массива

теперь .. док говорит

 To prevent issues due to mutable data, vert.x only allows simple immutable types such as number, boolean and string or Buffer to be used in shared data

это означает, что, возможно, вам понадобится использовать

 var map = vertx.getMap('demo.mymap');

 map.put('data', JSON.stringify({companies : [{id:1,name:"Yahoo"},{id:2,name:"Google"}]}))

а затем в другой verticle

 var map = vertx.getMap('demo.mymap');

var yourJSON = JSON.parse(map.get('data');

теперь .. может быть, хороший вариант, который будет использовать Redis как систему кэширования, хотя карта вершин, похоже, пока решает ваши потребности...

person clagccs    schedule 02.06.2014