На прошлой неделе мы описали несколько критериев, на которые следует обратить внимание при выборе кэша . На этой неделе пришло время составить список поставщиков кэша Java на основе этих критериев.
- Система кэширования Java
- Гуава
- Кофеин
- Тайник
- Бесконечный простор
- Издание сообщества Согласованности
- Поджигать
- Жеода
- Лесной орех
Система кэширования Java
JCS – это распределенная система кэширования, написанная на Java. Он предназначен для ускорения работы приложений, предоставляя средства для управления кэшированными данными различной динамической природы. Как и любая система кэширования, JCS наиболее полезна для приложений с высоким уровнем чтения и низким уровнем загрузки. Время задержки резко сокращается, и узкие места удаляются от базы данных в эффективно кэшируемой системе.
Имя | Система кэширования Java |
Поставщик | Фонд Апачей |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2002 |
Последняя фиксация | c6b852c с6b852c |
Звезды GitHub | 76 |
Конфигурация | На основе файлов (cache.ccf) |
.по умолчанию.атрибуты кэша=\ org.apache.commons.jcs 3.движок. Атрибуты CompositeCacheAttributes jcs.по умолчанию.атрибуты кэша.Имя памяти=\ org.apache.commons.jcs 3.движок.память.lru. Lрумемори-кеш | |
Пример кода | var.getInstance(“кэш”); // 1 cache.put(1 Л, “Один”); // 2 var.get(1 Л); // 3 System.out.println(значение); JCS.shutdown(); // 4 Получить доступ к области кэша Положить Очистить |
Локальный/распределенный | Локальный и распределенный |
Неблокирующий | ❌ |
JCache – кэш | ✅ |
Весенний кэш | ❌ |
TTL | ✅ |
Стратегии выселения | ЛРУ |
Разнообразный | JCS выходит за рамки простого кэширования объектов в памяти. Он предоставляет множество дополнительных функций: Управление памятью, переполнение диска (и дефрагментация) Пул потоков управляет группировкой элементов с минимальными зависимостями Быстрое удаление вложенных категорий Истечение срока действия данных (время простоя и максимальный срок службы) Расширяемая платформа Полностью настраиваемые параметры среды выполнения Разделение и конфигурация данных региона Параметры конфигурации мелкозернистых элементов Удаленная синхронизация Восстановление удаленного хранилища Неблокирующий шаблон “зомби” (фасад отказа) Боковое распределение элементов по HTTP, TCP или UDP Обнаружение других кэшей Обработка событий элементов Цепочка удаленного сервера (или кластеризация) и отказоустойчивость Настраиваемые крючки регистрации событий Ввод очереди событий Ввод сериализатора настраиваемых объектов Сопоставление ключевых шаблонов поисковая сеть эффективный поиск по нескольким ключам |
Гуава
Guava – это набор основных библиотек Java от Google, который включает новые типы коллекций (такие как multimap и multiset), неизменяемые коллекции, библиотеку графиков и утилиты для параллелизма, ввода-вывода, хеширования,/| кэширования , примитивов, строк и многого другого! Он широко используется в большинстве Java-проектов Google, а также широко используется многими другими компаниями.
Имя | Гуава |
Поставщик | Гугл |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2010 |
Последняя фиксация | ба690ба |
Звезды GitHub | ба690ба |
Конфигурация | Программный |
var.newBuilder().Максимальный размер(1000) .строить () | |
Пример кода | cache.put(1 Л, “Один”); // 1 вар.getifpresent(1 Л);// 2 System.out.println(значение); cache.cleanup(); // 3 Положить Очистить |
Локальный/распределенный | Местный |
Неблокирующий | ❌ |
JCache – кэш | ❌ |
Весенний кэш | ❌ |
TTL | ✅ |
Стратегии выселения | Удаление на основе веса FIFO: можно назначить вес каждой записи в соответствии с пользовательским алгоритмом и установить для кэша ограничение по весу. Затем, если новая запись превысит максимальный вес, “самые тяжелые” записи удаляются до тех пор, пока сумма весов не окажется ниже установленного порога. |
Разнообразный | Гуава – это одна банка, которая обеспечивает кэширование среди многих других возможностей |
Сторонний проект предоставляет адаптер кэша | |
Метод get принимает вызываемый параметр, который позволяет получить значение из кэша или вычислить его и сохранить, если оно не найдено | |
API использует мягкие и слабые ссылки в ключах и значениях | |
Позволяет прикреплять обработчики событий при удалении записей |
Кофеин
Кофеин – это высокопроизводительная , почти оптимальная библиотека кэширования. Для получения более подробной информации см. Наше руководство пользователя и просмотрите Документы API для получения последней версии.
Имя | Кофеин |
Поставщик | Бен Мэнс |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2014 |
Последняя фиксация | 41абб08 |
Звезды GitHub | 41абб08 |
Конфигурация | Программный |
var.newBuilder().Максимальный размер(1000) .строить () | |
Пример кода | cache.put(1 Л, “Один”); // 1 вар.getifpresent(1 Л);// 2 System.out.println(значение); cache.cleanup(); // 3 Положить Очистить |
Локальный/распределенный | Местный |
Неблокирующий | ✅ |
var.newBuilder().Максимальный размер(1000) .. стройте Асинхронно (); // (); // 1 CompletableFuture.get(1 Л, k -> дорогой поиск (1 л)) ; Создание асинхронного кэша | |
JCache – кэш | ✅ |
Весенний кэш | ✅ |
TTL | ✅ |
Стратегии выселения | Удаление на основе веса FIFO: можно назначить вес каждой записи в соответствии с пользовательским алгоритмом и установить для кэша ограничение по весу. Затем, если новая запись превысит максимальный вес, “самые тяжелые” записи удаляются до тех пор, пока сумма весов не окажется ниже установленного порога. |
Разнообразный | Кофеин – это переписывание Гуавы, вдохновленное ее API, но в основе которого лежат неблокирующие принципы. |
Автоматическая загрузка записей в кэш, необязательно асинхронное удаление на основе размера при превышении максимального значения на основе частоты и давности Истечения срока действия записей на основе времени, измеренного с момента последнего доступа или последней записи Асинхронное обновление при первом устаревшем запросе на запись происходит Ключи автоматически завернуты в слабые ссылки Значения автоматически завернуты в слабые или мягкие ссылки Уведомление об исключенных (или иным образом удаленных) записи Записи, распространяемые на внешний ресурс, Накапливают статистику доступа к кэшу |
Тайник
Ehcache – это кэш с открытым исходным кодом, основанный на стандартах, который повышает производительность, разгружает вашу базу данных и упрощает масштабируемость. Это наиболее широко используемый кэш на основе Java, потому что он надежный, проверенный, полнофункциональный и интегрируется с другими популярными библиотеками и платформами. Ehcache масштабируется от кэширования в процессе, вплоть до смешанных развертываний в процессе/вне процесса с кэшами размером терабайт.
Имя | Тайник |
Поставщик | Программное обеспечение AG |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2009 |
Последняя фиксация | 212с63с |
Звезды GitHub | 212с63с |
Конфигурация | Программный |
var.новый CacheManagerBuilder().с кэшем ( “( “кэш”, Конструктор конфигурации кэша.новый конструктор конфигурации кэша( Long.class , String.class , ResourcePoolsBuilder.куча ресурсов(10))) .строить (); CacheManager.инициализация (); вар.getCache (“кэш”, Long.class , String.class ); | |
Пример кода | cache.put(ключ, значение); // 1 вар.получить(ключ); // 2 CacheManager.закрыть(); // 3 Положить, чтобы очистить |
Локальный/распределенный | Местный |
Неблокирующий | ❌ |
JCache – кэш | ✅ |
Весенний кэш | ✅ |
TTL | ✅ |
Стратегии выселения | Подключаемая политика LRU LFU FIFO : EhCache предоставляет API для написания вашей собственной политики выселения |
Разнообразный | Ehcache 3.x – это полная перепись с Apache 2.x |
Терракотовая – это корпоративная версия Ehcache. Он предоставляет распределенные возможности. |
Бесконечный простор
Infinispan – это сетка данных с открытым исходным кодом в памяти, которая предлагает гибкие возможности развертывания и надежные возможности для хранения, управления и обработки данных. Infinispan предоставляет хранилище данных ключ/значение, которое может содержать все типы данных, от объектов Java до обычного текста. Infinispan распределяет ваши данные по эластично масштабируемым кластерам, гарантируя высокую доступность и отказоустойчивость, независимо от того, используете ли вы Infinispan в качестве энергозависимого кэша или постоянного хранилища данных.
Имя | Бесконечный простор |
Поставщик | Красная Шляпа |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2009 |
Последняя фиксация | 3dd18ce (3dd18ce) |
Звезды GitHub | 910 |
Конфигурация | Программный |
вар DefaultCacheManager(); CacheManager.DefinecOnfigUration(“кэш”, новая КонфигуРацияBuilder().память().максимальный размер(“1000”).сборка()); вар.getCache(“кэш”); | |
Пример кода | cache.put(1 Л, “Один”); // 1 вар.получить(1 Л); // 2 System.out.println(значение); CacheManager.закрыть(); // 3 Положить, чтобы очистить |
Локальный/распределенный | Локальный и распределенный |
Неблокирующий | ✅ |
Завершаемое будущее.GetAsync(1 л, k -> дорогой поиск(1 л)); | |
JCache – кэш | ✅ |
Весенний кэш | ✅ |
TTL | ✅ |
Стратегии выселения | ЛФУ |
Разнообразный | Infinispan является преемником кэша JBoss |
Совместимость: доступ к данным по нескольким протоколам и языкам программирования Устойчивые и отказоустойчивые данные: убедитесь, что данные всегда доступны для выполнения сложных рабочих нагрузок и транзакций ACID. : гарантируйте, что данные всегда являются достоверными и согласованными Кластерная обработка: обрабатывайте данные в режиме реального времени, не обременяя ресурсы Запросы: выполняйте простой, точный и быстрый поиск по распределенным наборам данных |
Издание сообщества Согласованности
Coherence – это масштабируемая, отказоустойчивая, готовая к работе в облаке распределенная платформа для создания сетевых приложений и надежного хранения данных. Продукт масштабно используется как для вычислений, так и для хранения исходных данных в широком спектре отраслей, таких как критически важные финансовые торговые системы, высокопроизводительные телекоммуникационные продукты и приложения для электронной коммерции.
Имя | Согласованность |
Поставщик | Оракул |
Источник | ГитХаб |
Лицензия | Универсальная Разрешительная лицензия |
Дата создания | 2001 |
Последняя фиксация | 5f0b968 5f0b968 |
Звезды GitHub | 340 |
Конфигурация | Основанный на файлах |
кэш локальный локальный 1000 | |
Пример кода | вар.getCache(“кэш”); // 1 кэш.положить(1 Л, “Один”); // 2 вар.получить(1 Л); // 3 System.out.println(значение); кэш.закрыть(); // 4 Получаем ссылку на кэш Ставим Получаем Очищаем |
Локальный/распределенный | Локальный и распределенный |
Неблокирующий | ✅ |
вар .getCache(“кэш”) .асинхронный(); Завершаемый future.get(1L); | |
JCache – кэш | ✅ |
Весенний кэш | ❌ |
TTL | ✅ |
Стратегии выселения | MFU и MRU масштабируются по логарифмической кривой LRU Подключаемая политика LFU: EhCache предоставляет API для написания собственной политики выселения |
Разнообразный | Oracle купила Coherence у Tangosol в 2007 году |
Доступны коммерческие версии: Стандартная Корпоративная сеть | |
Кластеризация и сегментирование данных Масштабируемость и Высокая доступность Сохранение данных на основе ключей и значений На диске Параллельные запросы Эффективная Агрегация Обработка на месте Сложная модель событий |
Поджигать
Распределенная База Данных Для Высокопроизводительных Вычислений Со Скоростью В Памяти
Имя | Поджигать |
Поставщик | Сеточная сеть |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | ? |
С открытым исходным кодом | 2014 |
Последняя фиксация | 73a687d 73a687d |
Звезды GitHub | 4k |
Конфигурация | Программный |
var cacheconfiguration(); Кэш cachecfg.set В кэше кучи Включен(истина); фабрика cache Cfg.SetEvictionPolicy( () -> создать LruEvictionPolicy<>(1000)); cachecfg.setName(“кэш”); вар IgniteConfiguration(); cfg.setCacheConfiguration(cachecfg);.start(cfg); вар.getOrCreateCache(“кэш”); | |
Пример кода | кэш.положить(1 Л, “Один”); // 1 вар.получить(1 Л); // 2 System.out.println(значение); воспламенить.закрыть(); // 3 Положить, чтобы очистить |
Неблокирующий | ✅ |
IgniteFuture.GetAsync(1Л );// 1 Ignite предоставляет свои собственные асинхронные примитивы, которые отличаются от JDK | |
JCache – кэш | ✅ |
Весенний кэш | ✅ (предоставлено компанией Ignite) |
TTL | ✅ |
Стратегии выселения | Сортированный LRU FIFO : Записи удаляются по порядку, чтобы они нуждались в реализации Comparable или вам необходимо настроить собственную реализацию компаратора |
Разнообразный | Основные функции: Распределенное Многоуровневое хранилище SQL, совместное вычисление транзакций ACID, Машинное обучение, Непрерывные запросы |
Gridgain предлагает корпоративную версию Ignite под названием Вычислительная платформа GridGain в памяти |
Жеода
Apache Geode – это платформа управления данными, которая обеспечивает согласованный доступ в режиме реального времени к приложениям с интенсивным использованием данных в широко распределенных облачных архитектурах.
Apache Geode объединяет память, процессор, сетевые ресурсы и, возможно, локальный диск в нескольких процессах для управления объектами и поведением приложения. Он использует методы динамической репликации и разделения данных для обеспечения высокой доступности, повышения производительности, масштабируемости и отказоустойчивости. Помимо того, что Apache Geode является распределенным контейнером данных, он представляет собой систему управления данными в памяти, которая обеспечивает надежные асинхронные уведомления о событиях и гарантированную доставку сообщений.
Имя | Жеода |
Поставщик | Основной |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2015 |
С открытым исходным кодом | 2019 |
Последняя фиксация | а21дф0в |
Звезды GitHub | 2к |
Конфигурация | Основанные на файлах и программные |
var CacheFactory().создать(); var.createregionfactory(); фабрика.установить атрибуты выселения (атрибуты выселения.createlruentryattributes(1000)); var.создать (“кэш”); | |
Пример кода | регион.положить(1 Л, “Один”); // 1 вар.получить(1 л); // 2 System.out.println(значение) ; cache.close(); // 3 Поставить Очистить |
Неблокирующий | ❌ |
JCache – кэш | ❌ |
Весенний кэш | ✅ |
TTL | ✅ |
Стратегии выселения | ЛРУ |
Разнообразный | GemStone – это компания, которая изначально разработала Geode. В 2010 году SpringSource приобрела Gemstone. |
[…] основные характеристики и ключевые функциональные возможности: Высокая пропускная способность для чтения и записи Низкая и предсказуемая задержка Высокая Масштабируемость Непрерывная доступность Надежные уведомления о событиях Распараллеленное поведение приложений в хранилищах данных Сохраняемость на дисках без общего доступа Сниженная стоимость владения Возможность одного перехода для Клиент/Сервер Безопасность Клиента/Сервера Многосайтовое распределение данных Непрерывный Запрос И Обмен Разнородными Данными |
Лесной орех
На момент написания этой статьи я работаю в Hazelcast.
Hazelcast – это платформа приложений для потоковой передачи и использования оперативной памяти для быстрых рабочих нагрузок с отслеживанием состояния и интенсивным использованием данных локально, на периферии или в качестве полностью управляемой облачной службы.
Имя | Лесной орех. |
Поставщик | Лесной орех. |
Источник | ГитХаб |
Лицензия | Apache 2.0 |
Дата создания | 2008 |
Последняя фиксация | de91d6b де91d6b |
Звезды GitHub | de91d6b де91d6b |
Конфигурация | Основанные на файлах и программные |
вар.newHazelcastInstance(); hazelcast.getConfig().получитьmapconfig(“кэш”).получитьconfig выселения () .setSize(1000); вар.GetMap(“кэш”); | |
Пример кода | map.положить(1 Л, “Один”); // 1 вар.получить(1 л); // 2 System.out.println(значение); hazelcast.завершение работы(); // 3 Положить, чтобы очистить |
Неблокирующий | ✅ |
Этап завершения.GetAsync(1L); | |
JCache – кэш | ✅ |
Весенний кэш | ✅ |
TTL | ✅ |
Стратегии выселения | Подключаемая политика LRU LFU: Hazelcast предоставляет API для написания вашей собственной политики выселения |
Разнообразный | Hazelcast предоставляет корпоративную версию с дополнительными функциями |
Распределенные вычисления, структуры данных и события Соединители потоковой обработки данных для чтения/записи в такие системы, как Apache Kafka, JMS, JDBC и HDMS, выполняющие запросы с использованием SQL и предикатов Подсистема CP для распределенной координации Варианты использования Реализация JCache Репликация веб-сеансов (на основе фильтров, Tomcat, Jetty) Утилиты администрирования и мониторинга, включая Центр управления, JMX, показатели и диагностику |
В следующем проекте Maven показан простой ввод ключа для каждого кэша.
поставщики javageek/кэша
Я изо всех сил старался предоставить точную объективную информацию. Пожалуйста, дайте мне знать в комментариях, если что-то не так.
Идти дальше:
Первоначально опубликовано на Java-гик 31 октября ст , 2021
Оригинал: “https://dev.to/nfrankel/a-list-of-cache-providers-3o5o”