1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/shujianhui-new-jpa-redis-parent

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Перевод текста на русский язык:

Финансовый уровень SpringBoot, открытое корпоративное ПО JPA REDIS бесшовная интеграция, оптимизация кэша.

Введение

Этот проект развивается с 2019 года, внутренняя версия уже используется в производственной среде крупных проектов, после строгого тестирования количество ошибок BUG невелико, не более 1 часа для расширения кэша, существующие несколько видов кэширования имеют демонстрацию, можно следить за ними постоянно, будет непрерывное обновление, также надеемся на активное участие в совместной разработке. Если у вас есть хорошие предложения, вы можете связаться со мной, я обязательно приму их к сведению.

Первый вариант: только кэш Redis, без сохранения базы данных MySQL, требуется добавить аннотацию @EnableRedisRepositories.

Преимущества: очень удобная конфигурация, экономия места, мощные функции, поддержка кэширования и индексации и т. д.

Недостатки: можно использовать только Redis, не подходит для общего сценария разработки, подходит только для сценариев, где Redis является единственным хранилищем данных.
Второй вариант: добавление способа аннотации, требуется добавление аннотации @EnableCaching.

Преимущества: относительно удобная и экономная конфигурация.

Недостатки: хотя используется Redis и MySQL, но при разработке легко допустить ошибки, слишком много удалений из кэша и слишком много элементов в кэше; трудоёмкость добавления кэша относительно велика;
Третий вариант (рекомендуется):

Преимущества: используется Redis и MySQL, сверхэкономная и очень удобная конфигурация, мощные настраиваемые функции, гибкие в использовании, оптимизированный кэш, минимальное количество элементов в кэше, минимальный диапазон удаления кэша, динамическое изменение данных в кэше в реальном времени, поддерживается как первый уровень кэша, так и второй уровень кэша, а также поддерживается транзакция.

Недостатки: большая часть сценариев уже поддерживается, конечно, это зависит от человека, и можно сделать всё более всеобъемлющим, также можно рассмотреть параллельную производительность, способ сортировки, поддержку индекса и другие сценарии.

QQ общение

  • Автор: 972153513

Описание версии

  • Текущая версия v3.0.RELEASE официально выпущена и может быть использована.
  • По сравнению с v2.0.RELEASE производительность значительно улучшена.
  • Используемые технологии также полностью отличаются, в основном используются lettuce, disruptor, reactor, rxjava, rxjava2, commons-pool2 и др.

Примечание: lettuce (высокоуровневый Java-клиент Redis, используемый для поточно-безопасной синхронизации, асинхронного и реактивного использования. Поддерживает кластеры, Sentinel, конвейеры и кодировщики. https://lettuce.io)

  • Крупные старые проекты добавляют кэш максимум за 1 час и завершают работу идеально.
  • Поддержка режима обработки Netty без блокировки, очень быстрый режим.
  • Поддержка конвейерного режима Netty, очень быстрый режим.
  • Поддержка асинхронного режима работы Netty, очень быстрый режим.
  • Поддерживает клиентские очереди, асинхронные пулы потоков, синхронные пулы потоков и режимы работы.
  • Поддержка пула ресурсов клиента Netty и режима работы.
  • Поддержка отката и повторной попытки 5 раз.
  • Поддержка кодирования SerializedObjectCodec.
  • Поддержка безопасного кэширования на уровне финансовых операций.
  • Автоматическое переключение на базу данных при сбое Redis, что не влияет на работу системы.

План версии

  • В версии v4.0 будет реализована функция: однократное сохранение больших объёмов данных, обработка пиковых нагрузок с использованием MQ, то есть запуск конвейерного режима.
  • Версия v5.0 реализует функцию: решение проблемы согласованности кэша и межсерверного запроса данных с помощью canal.

Обязательные условия для запуска:

  • JDK 8 181 +
  • Maven 3.3.9 +
  • Jedis 2.90
  • MySql 5.7 + или MariaDB 10.2 +
  • SpringBoot 1.5.7.RELEASE + (можно обновить версию самостоятельно, следующая версия будет обновлена до SpringBoot 2.x, поскольку SpringBoot 2.x больше не поддерживает Jedis, можно использовать только Lettuce)

Реализованные функции:

Общие функции

  • Управление транзакциями Spring JPA и Lettuce, атомарность транзакций и т.д.
  • Поддержка загрузки кэша и сортировки запросов.
  • Поддержка конфигурации одномашинного режима Redis.
  • Поддержка конфигурации режима Redis Sentinel.
  • Поддержка общей конфигурации кластера Redis.
  • Поддержка независимой конфигурации главного и подчинённого Redis.
  • Поддержка AWS ElastiCache конфигурации кластера Redis.
  • Реализация SerializedObjectCodec для реализации RedisCodec<String, Object>.
  • Поддержка CompressionCodec.CompressionType.GZIP для сжатия пространства с минимальными затратами.
  • Поддержка выполнения команд распределённой блокировки в режиме командной строки.
  • Поддержка основного ключа базы данных для автоматического увеличения.
  • Поддержка распределённого единого механизма распределения идентификаторов.
  • Поддержка HikariCP пула соединений.
  • Поддержка lombok.
  • Поддержка FastJson.

Кэш первого уровня (String)

  • Контроллерный интерфейс слоя кэша, нет необходимости учитывать проблему сортировки, возможно, слишком много элементов кэша, верхний слой данных изменяется относительно сильно, особенно для разбиения на страницы и разнообразия форм представления данных, но хорошо, что интерфейс не так уж велик (полностью реализован).
  • Поддержка ProtoStuffRedisSerializer, самый быстрый способ (полностью реализован).
  • Поддержка FstRedisSerializer, очень быстрый способ (обычно используется для больших данных, полностью реализован).
  • Поддержка KryoRedisSerializer, очень быстрый способ (рекомендация официального сайта, безопасность типов, полностью реализована).
  • Поддержка FastJsonRedisSerializer, относительно быстрый способ (безопасность типов, полностью реализован).
  • Время кэширования по умолчанию составляет 4 дня, нельзя динамически изменять данные кэша (полностью реализовано).

Кэш второго уровня (Hash)

  • JPA универсальная интеграция кэша без проблем для добавления, удаления, изменения и запроса (BaseJpaRedisRepositoryImpl) (полностью реализована).
  • JPA сложная поддержка SQL без проблем интеграции кэша (BaseQueryDslJpaRepository) (полностью реализована).
  • JPA поддержка без проблем кэширования с помощью FindBy (SecurecyPostProcessor) (полностью реализована).
  • JPA поддерживает режим аннотаций @Query без проблем с интеграцией кэша (полностью реализована).
  • Поддержка интеграции транзакций JPA и Redis (полностью реализована).
  • Поддержка ProtoStuffRedisSerializer, самого быстрого способа (полностью реализована).
  • Поддержка FstRedisSerializer, очень быстрого способа (обычно используется для больших данных, полностью реализована).
  • Поддержка KryoRedisSerializer, очень быстрого способа (рекомендация официального сайта, безопасность типов, полностью реализована).
  • Поддержка FastJsonRedisSerializer, относительно быстрого способа (безопасность типов, полностью реализована).
  • Поддержка оптимизации кэша, минимального количества элементов кэша и минимального диапазона удаления кэша (полностью реализована).
  • Поддержка динамического изменения данных кэша в реальном времени (полностью реализована).
  • Поддержка синхронного пакетного режима обработки, очень быстрый (полностью реализован).
  • Поддержка конвейерного пакетного режима обработки, очень быстрый, рекомендуется.
  • Поддержка конвейерной транзакции, сверхбыстрый режим, рекомендуется.
  • Поддержка конвейерных транзакций с оптимистичными блокировками, сверхбыстрый режим, рекомендуется.
  • Поддержка режима безблокировочной обработки Netty, сверхбыстрого (полностью реализован).
  • Поддержка асинхронного конвейерного пакетного режима обработки Netty, сверхбыстрого (полностью реализован).
  • Поддержка асинхронного конвейерного транзакционного режима Netty, сверхбыстрого (полностью реализован).
  • Поддержка асинхронного конвейерного транзакционного режима с оптимистическими блокировками Netty, сверхбыстрого (полностью реализован).
  • Поддержка режима отката исключения и повторной попытки 5 раз (полностью реализован).
  • Поддержка пакетных команд, превышающих количество запросов в очереди (по умолчанию 20), автоматический повторный режим (полностью реализован).

Использование

Очень просто, например: CustomerRepository, просто наследуйте BaseJpaRedisRepository<Customer, Long>.

Вот так: CustomerRepository extends BaseJpaRedisRepository<Customer, Long>

Предложение: Данные, которые необходимо кэшировать, следует выделить в специализированную таблицу или сущность в качестве репозитория кэша, чтобы упростить управление кэшем. Для большинства случаев можно напрямую наследовать BaseJpaRedisRepository, не наследуя Repository, кэш не будет работать.

Производительность: Пакетное сохранение 1000 операций, согласно текущей конфигурации, занимает в среднем 530 мс, первая операция занимает больше времени. Некоторые конфигурации требуют инициализации.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

СпрингБут: бесшовное интегрирование JPA и REDIS для оптимизации кэширования в корпоративных приложениях с открытым исходным кодом. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/shujianhui-new-jpa-redis-parent.git
git@api.gitlife.ru:oschina-mirror/shujianhui-new-jpa-redis-parent.git
oschina-mirror
shujianhui-new-jpa-redis-parent
shujianhui-new-jpa-redis-parent
master