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

OSCHINA-MIRROR/jhsy18702624734-jcache-spring-boot-starter

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

spring-boot-starter-jcache

Введение

Это облегчённый компонент настраиваемого кэша, основанный на spring cache. Он расширяет только оригинальный компонент spring-cache и использует Redis в качестве кэширующего сценария, но не предоставляет распределённые блокировки, очереди задержки и рабочие очереди или другие функции.

Здесь представлен список текстовых сценариев, в которых используется кэш. Большинство проектов используют комбинированные стратегии кэширования, то есть некоторые проекты могут использовать только локальную память в качестве кэша, а другие сценарии требуют использования Redis для распределённого кэширования. После того как стратегия кэширования оригинального spring-boot-starter-cache определена, проект может использовать только один сценарий кэширования, если только он не реализует комбинированное расширение кэширования самостоятельно.

Недостатком аннотаций является то, что при использовании Redis в качестве кеша с аннотациями @Cacheable и @CachePut невозможно указать время истечения срока действия кеша при сохранении кеша. Также не очень элегантно использовать имена менеджеров кеша через аннотацию cacheManagers. Я хочу напрямую использовать перечисления, чтобы указать, хочу ли я использовать Redis или Caffeine.

Представлены следующие функции:

  • В настоящее время интегрированы concurrentMapCacheManager, caffeineCacheManager для управления локальной памятью, а также noOpCacheManager в качестве менеджера кеша для тестирования и redisCacheManager для распределенного управления кешем. CaffeineCacheManager и redisCacheManager являются наиболее репрезентативными менеджерами кеша, и Redis не будет подробно описан. Для получения дополнительной информации о высокопроизводительном кэше Caffine см. их адрес GitHub: https://github.com/ben-manes/caffeine.
  • Помимо оригинальных нескольких аннотаций, для redisCacheManager предоставляется возможность ручного управления кешем через Bean.

Архитектура программного обеспечения

  1. Используется версия Spring Boot 2.x, конкретная версия — 2.6.3, но версии 2.x должны работать, возможно, версии 1.x могут не работать, конкретные тесты не проводились.
  2. Оригинальный spring-boot-starter-cache, spring-boot-starter-redis.
  3. fastjson.
  4. apache-common.

Инструкция по установке

Я не публиковал его в своём частном репозитории, вы можете опубликовать его в своём собственном частном репозитории.

Для установки в локальный репозиторий для тестирования выполните следующую команду: mvn clean install.

Чтобы опубликовать в удаленном репозитории Maven и выпустить его, выполните следующие шаги:

  1. Настройте maven setting.xml с учётными данными вашего частного сервера.
<server>
  <id>nexus-snapshots</id>
  <username>admin</username>
  <password>admin123</password>
</server>
  1. Добавьте в файл pom компонента следующее:
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>http://{Ваш частный адрес}/repository/maven-releases/</url>
    </repository>
</distributionManagement>
  1. Выполните команду mvn clean deploy.
  2. В файле pom проекта, который должен использовать этот компонент, добавьте следующее:
        <dependency>
            <groupId>org.madcat</groupId>
            <artifactId>spring-boot-starter-jcache</artifactId>
            <version>1.0-RELEASE</version>
        </dependency>

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

  1. Включить

Добавьте аннотацию @JEnableCaching к классу запуска, чтобы включить функцию. Обратите внимание, что если ваш файл конфигурации использует конфигурацию spring.cache, эта конфигурация будет использоваться напрямую, и все расширенные функции этого компонента будут отключены (то есть исходная конфигурация имеет более высокий приоритет).

  1. Использование аннотации

@JCacheable(value = "jkdd:shop_auth", cacheType = CacheType.REDIS, key = "#shopId", expireTime = 3600, timeunit = TimeUnit.SECONDS)

  • value/cacheNames: значение представляет собой префикс ключа Redis, используемый при генерации ключа. Конечно, вы можете настроить код так, чтобы не использовать это в качестве префикса. Здесь смысл заключается в том, чтобы классифицировать кеш в соответствии с бизнесом. Когда тип кеша — caffeine, это имя bean-компонента Caffeine, внедряемого в контейнер.
  • cacheType: представляет тип кеша, например, здесь используется Redis в качестве типа кеша.
  • expireTime: срок действия Redis.
  • timeunit: единица времени истечения срока действия, по умолчанию — секунды. Другие функции аннотаций такие же, как и у исходного @Cacheable, обратитесь к документации по использованию spring cache. Остальные аннотации @JCachePut, @JCacheEvict, @JCaching и @JCacheable такие же.
  1. Конфигурация Redis

Redis зависит от исходной конфигурации Redis ConnectionFactory, здесь опущено описание пула соединений, jedis.lettuce — это реализация этого интерфейса.

spring.redis.database=1
spring.redis.host=127.0.0.1
spring.redis.password=123
spring.redis.port=6701
  1. Внедрение Caffeine Cache

Реализуйте интерфейс JCaffeineCacheFactory и обратитесь к NativeCaffeineCache, который представляет собой кэш Caffeine без какой-либо стратегии.

@Component
public class NativeCaffeineCache implements JCaffeineCacheFactory<String, String> {

    @Override
    public String cacheName() {
        return "nativeCaffeineCache";
    }

    @Override
    public Cache<String, String> build() {
        return Caffeine.newBuilder().build();
    }
}

Определите класс конфигурации CaffeineConfig.

@Configuration
public class CaffeineConfig {

    @Bean("whiteListCaffeineCache")
    public JCaffeine<Object, Object> whiteListCache() {
        Caffeine<Object, Object> caffeine = Caffeine.newBuilder().recordStats().maximumSize(500).expireAfterAccess(1, TimeUnit.HOURS);
        return new JCaffeine<>("whiteListCaffeineCache", caffeine);
    }
}

Или определите класс конфигурации CaffeineConfig с использованием SPEL для создания bean.

@Configuration
public class CaffeineConfig {

    @Bean("whiteListCaffeineCache")
    public JCaffeineSpel<Object, Object> whiteListCache() {
        return new JCaffeineSpel <>("whiteListCaffeineCache", "maximumSize=500,expireAfterAccess=1");
    }
}
``` (注:使用注解时候你的注解value或者cacheManagers就得指定bean的名称,否则会自动创建一个原生的Caffine策略作为缓存策略,导致你达不到预期效果)

5. Вручную оперируйте кэшем Redis, внедрите реализацию bean:

@Autowired private RedisCacheSupport redisCacheSupport


#### Вклад
1. Форкните этот репозиторий.
2. Создайте ветку Feat_xxx.
3. Отправьте код.
4. Создайте Pull Request.

#### Навыки
1. Используйте Readme_XXX.md для поддержки разных языков, например Readme_en.md, Readme_zh.md.
2. Официальный блог Gitee — blog.gitee.com.
3. Вы можете перейти по адресу https://gitee.com/explore, чтобы узнать об отличных open-source проектах на Gitee.
4. GVP — это аббревиатура от «Gitee Most Valuable Projects», которая обозначает выдающиеся open-source проекты, выбранные на основе комплексного анализа.
5. Руководство по использованию, предоставленное Gitee, можно найти по ссылке https://gitee.com/help.
6. «Звёзды Gitee» — это рубрика, демонстрирующая таланты участников Gitee по ссылке https://gitee.com/gitee-stars/.

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

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

Введение

Это пользовательский компонент кэша, основанный на исходном компоненте Spring Cache и модифицированный. Он повторно инкапсулирует исходные аннотации кэширования и лучше соответствует привычкам разработки бизнес-сценариев. Были только расширены исходные функции, без изменения существующих, что соответствует принципу открытости и закрытости проект... Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/jhsy18702624734-jcache-spring-boot-starter.git
git@gitlife.ru:oschina-mirror/jhsy18702624734-jcache-spring-boot-starter.git
oschina-mirror
jhsy18702624734-jcache-spring-boot-starter
jhsy18702624734-jcache-spring-boot-starter
master