Спрингбут: открытое корпоративное решение JPA REDIS для бесшовной интеграции и детальной настройки кэша.
Введение
Этот проект развивается с 2019 года, внутренняя версия уже используется в производственной среде крупных проектов, прошла строгие испытания, количество ошибок невелико, не более 1 часа для расширения кеша. Существующие методы кеширования имеют демонстрационные версии, можно следить за ними постоянно, будет постоянное обновление, также надеемся на активное участие в совместной разработке.
Если у вас есть хорошие предложения, вы можете связаться со мной, я обязательно приму их к сведению.
Первый вариант: только кеш Redis, без сохранения базы данных MySQL, требуется аннотация @EnableRedisRepositories.
- Преимущества: очень простая конфигурация, очень удобно, мощная функциональность, поддержка кеширования и индексации.
- Недостатки: может работать только с Redis, не подходит для общего сценария разработки, подходит только для сценариев, где Redis является единственным хранилищем данных.
Второй вариант: метод добавления аннотаций, требуется аннотация @EnableCaching.
- Преимущества: относительно простая настройка, относительно удобная.
- Недостатки: хотя используется Redis и MySQL, но при разработке легко допустить ошибки, слишком много элементов удаляются из кеша, слишком много кешированных элементов; работа по добавлению кеша несколько велика.
Третий вариант (рекомендуется):
- Преимущества: используется Redis и MySQL, сверхпростая конфигурация, максимально удобно, мощная настраиваемая функциональность, гибкая в использовании, детальная настройка кеша, минимальное количество элементов кеша, минимальный диапазон удаления кеша, динамическое изменение всех данных в кеше, поддерживается как первый уровень кеша, так и второй уровень кеша, а также транзакции.
- Недостатки: в настоящее время поддерживает большинство сценариев, конечно, это зависит от человека, можно сделать его более всеобъемлющим, также можно рассмотреть параллельную производительность, способ сортировки, поддержку индексации и другие сценарии.
QQ общение
Версия примечания
- В настоящее время выпущена версия v2.0.RELEASE, которая потрясла мир, для режима зависимости родитель-потомок проекта, пожалуйста, перейдите в проект [https://gitee.com/shujianhui/new-jpa-redis-parent].
- Исправлены все ошибки v1.0.RELEASE.
- Реконструкция и оптимизация, выполнение пакетной обработки с использованием технологии конвейера, повышение скорости работы ракеты.
- Крупные старые проекты добавляют кеш максимум за 1 час, идеально завершают работу.
- Поддержка асинхронного режима Netty (высокопроизводительный Java-клиент Redis, используемый для обеспечения безопасности потоков, асинхронности и реактивного использования. Поддерживает кластеры, Sentinel, конвейеры и кодировщики. https://lettuce.io).
- Поддержка режима повторной попытки при возникновении исключения 5 раз.
Обязательные условия для запуска:
- JDK 8 181 +
- Maven 3.3.9 +
- Jedis 2.90
- MySql 5.7 + или MariaDB 10.2 +
- SpringBoot 1.5.7.RELEASE + (можно обновить версию самостоятельно, следующая версия обновлена до SpringBoot 2.x)
Реализованные функции:
Общие функции
- Управление транзакциями Spring JPA и jedis для обеспечения атомарности транзакций и т.д.
- Поддержка загрузки кеша и сортировки запросов.
- Поддержка конфигурации одноузлового режима Redis.
- Поддержка конфигурации режима часового Redis.
- Поддержка конфигурации кластера Redis.
- Поддержка конфигурации фрагментации Redis.
- Поддержка пула соединений HikariCP.
Кэш первого уровня (StringRedisTemplate):
- Контроллер интерфейса слой кэширования, нет необходимости учитывать проблемы сортировки, возможно, слишком много кэшированных элементов, верхний слой данных изменяется относительно сильно, особенно для разбиения на страницы и разнообразия форм представления данных, но хорошо то, что интерфейсов не так много (полностью реализовано).
- Поддерживает ProtoStuffRedisSerializer самый быстрый способ (полностью реализован).
- Время кэширования по умолчанию составляет 4 дня, невозможно динамически изменять данные кэша (полностью реализовано).
Кэш второго уровня (RedisTemplate<String, ?>):
- JPA общая поддержка увеличения, удаления, изменения и запроса без проблем с интеграцией кеша (BaseJpaRedisRepositoryImpl) (полностью реализована).
- JPA Поддержка сложного SQL без проблем с интеграцией кэша (BaseQueryDslJpaRepository) (полностью реализована).
- JPA FindBy режим поддержки бесшовной интеграции кеша (SecurecyPostProcessor) (полностью реализован).
- Режим аннотации JPA @Query поддерживает бесшовную интеграцию кеша (полностью реализован).
- Поддерживает ProtoStuffRedisSerializer самый быстрый способ (полностью реализован).
- Поддерживает режим KryoRedisSerializer (полностью реализован).
- Поддерживает FastJsonRedisSerializer режим (полностью реализован).
- Поддерживает Jackson2JsonRedisSerializer режим (полностью реализован).
- Поддерживает StringRedisSerializer режим (полностью реализован).
- Поддерживает способ интеграции транзакций JPA и Redis (полностью реализован).
- Поддерживает детальный кэш, количество кэшированных элементов минимально, диапазон удаления кэша минимален (полностью реализован).
- Поддерживает динамические изменения всех данных в кэше (полностью реализован).
- Поддерживает высокоскоростной режим пакетной обработки конвейера (полностью реализован).
- Поддерживает сверхскоростной режим конвейерных транзакций (полностью реализован).
- Поддерживает сверхскоростной оптимистичный режим блокировки конвейерных транзакций (полностью реализован).
- Частично поддерживает высокоскоростной асинхронный режим пакетной обработки Netty (частично реализован).
- Частичная поддержка высокоскоростного асинхронного конвейерного режима транзакций Netty (частично реализована).
- Частичная поддержка сверхскоростного оптимистичного режима блокировки асинхронных конвейерных транзакций Netty (частично реализована).
- Поддерживает режим повторной попытки исключения 5 раз (полностью реализован).
Комментарии ( 0 )