Могу ли я использовать LinkedHashMap в Hazelcast? - PullRequest
0 голосов
/ 19 июня 2020

могу ли я как-нибудь использовать connectedHashMap в Hazelcast (java spring). Мне нужно получить уникальные записи из общего кеша в памяти hazelcast, но в том порядке, в котором я их вставил. Я нашел в документации hazelcast (https://docs.hazelcast.org/docs/latest-dev/manual/html-single/), что они предлагают распределенные реализации общих структур данных. Но карта не сохраняет порядок элементов, а список или очередь не удаляют повторяющиеся данные. Вы знаете, могу ли я использовать connectedHashMap или каким-то образом получить уникальные данные и сохранить их порядок?

1 Ответ

0 голосов
/ 20 июня 2020

Упорядоченное или связанное хранилище несовместимо с целями сетки данных - высоко параллельное и распределенное хранилище.

Упорядоченное извлечение возможно. Hazelcast's Paging Predicate с компаратором сделает это. Или объем не слишком велик, вы можете получить набор записей и отсортировать их самостоятельно.

Уловка в том, что вам нужно предоставить поле для заказа.

Если ваши данные уже какой-то порядковый номер или временная метка, которые всегда уникальны, это просто.

Если нет, возможно, что-то вроде Atomi c Long подойдет. getAndIncrement() даст вам уникальный номер, который будет использоваться для каждой вставки.

Обратите внимание, это имеет состояние гонки, если два или более потока вставляются одновременно. Чтобы решить эту проблему, вам понадобится какой-то синглтон @Service, работающий где-то, чтобы выполнить шаг " get next seqno; inset `.

И если вы перезапустите сетку, seqno в счетчик atomi c необходимо переставить в нужное место.

...