Поиск легкого Java-совместимого хранилища ключей в памяти

Berkeley DB будет лучшим выбором, но я не могу использовать его из-за проблем с лицензированием.

Есть ли альтернативы?

Ответы

Ответ 1

Вы можете попробовать Hazelcast. Просто добавьте hazelcast.jar в свой путь к классам. И начать кодирование

java.util.Map map = Hazelcast.getMap("myMap");

Вы получите встроенную, распределенную, динамически масштабируемую сетку данных, которая быстро выполняет команду.

Ответ 2

Ваш вопрос может означать одну из двух вещей.

Если вы имеете в виду структуру данных для хранения пар ключ-значение, используйте один из Map экземпляров, которые являются стандартной частью JDK.

Если вы после хранилища значений в памяти в памяти, я бы предложил взглянуть на EHCache или даже memcached.

Ответ 4

Chronicle-Map является сильной альтернативой.

  • Чистая Java, просто java.util.Map реализация
  • Сохраняет данные с кучи, необязательно сохраняющиеся на диске через файлы с отображением памяти
  • Открытый, разрешающая лицензия Apache 2.0
  • Невероятно быстро, может управлять миллионами обновлений/запросов в секунду (видеть точные цифры)

Ответ 5

jdbm отлично работает для такого рода вещей. Он предназначен для хранения на диске в выгружаемом файле, обеспечивает базовую поддержку транзакций (никаких гарантий по изоляции, кроме ACD). Мы использовали его в производственной системе с довольно широким развертыванием и были очень довольны производительностью, стабильностью и т.д.

Ответ 6

Рассмотрите возможность использования jredis. Это клиент Java для Redis, постоянного хранилища ключей. Там также есть драйвер JDBC: code.google.com/p/jdbc-redis/.

Ответ 7

Я знаю, что это двухлетний пост, но я недавно общался с Infinispan, и мне это нравится, Я не эксперт каким-либо образом, но мне было не слишком сложно настраивать распределенный кеш с несколькими узлами, и я собирал некоторые данные из них примерно через час.

Ответ 8

MapDb является альтернативой Berkley с дружественной лицензией Apache 2.

  • Предоставляет хранилище ключей через интерфейс Java.
  • Легкий (баня 300 КБ)
  • Быстрый и поточный
  • Сохраняет изменения на диске, если вы хотите
  • Многие другие features

Ответ 9

Есть lightweigh или embedded dbs, такие как HSQLDB, Derby, SQLite Но, как и другие, вы не понимаете, зачем вам нужен db для хранения ключей/значений...

Почему не карта? Нужно ли сохранять ключ/значения при перезагрузке приложения?

Кроме того, возможно, это не то, что вам нужно, но с html5 на современных браузерах у вас есть localStorage, который позволяет вам хранить ключ/значения в браузере с помощью javascript.

Ответ 10

Я бы рекомендовал попробовать Redisson. Вы можете использовать распределенные и масштабируемые версии Map или ConcurrentMap и другие (Set, List, Queue, Lock...) поверх высокопроизводительного ключевого значения Redis.

Простой пример:

Redisson redisson = Redisson.create();

ConcurrentMap<String, SomeObject> map = redisson.getMap("anyMap");

...

redisson.shutdown();