Поиск легкого Java-совместимого хранилища ключей в памяти
Berkeley DB будет лучшим выбором, но я не могу использовать его из-за проблем с лицензированием.
Есть ли альтернативы?
Ответы
Ответ 1
Вы можете попробовать Hazelcast. Просто добавьте hazelcast.jar в свой путь к классам. И начать кодирование
java.util.Map map = Hazelcast.getMap("myMap");
Вы получите встроенную, распределенную, динамически масштабируемую сетку данных, которая быстро выполняет команду.
Ответ 2
Ваш вопрос может означать одну из двух вещей.
Если вы имеете в виду структуру данных для хранения пар ключ-значение, используйте один из Map
экземпляров, которые являются стандартной частью JDK.
Если вы после хранилища значений в памяти в памяти, я бы предложил взглянуть на EHCache или даже memcached.
Ответ 3
HashMap?
Ответ 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();