Рубрики
Без рубрики

Список поставщиков кэша

На прошлой неделе мы описали несколько критериев, на которые следует обратить внимание при выборе кэша. На этой неделе пришло время перечислить… Помеченный java, кэш, производительность.

На прошлой неделе мы описали несколько критериев, на которые следует обратить внимание при выборе кэша . На этой неделе пришло время составить список поставщиков кэша 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
Конфигурация Основанные на файлах и программные
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”