spring-boot-starter-jcache
Введение
Это облегчённый компонент настраиваемого кэша, основанный на spring cache. Он расширяет только оригинальный компонент spring-cache и использует Redis в качестве кэширующего сценария, но не предоставляет распределённые блокировки, очереди задержки и рабочие очереди или другие функции.
Здесь представлен список текстовых сценариев, в которых используется кэш. Большинство проектов используют комбинированные стратегии кэширования, то есть некоторые проекты могут использовать только локальную память в качестве кэша, а другие сценарии требуют использования Redis для распределённого кэширования. После того как стратегия кэширования оригинального spring-boot-starter-cache определена, проект может использовать только один сценарий кэширования, если только он не реализует комбинированное расширение кэширования самостоятельно.
Недостатком аннотаций является то, что при использовании Redis в качестве кеша с аннотациями @Cacheable и @CachePut невозможно указать время истечения срока действия кеша при сохранении кеша. Также не очень элегантно использовать имена менеджеров кеша через аннотацию cacheManagers. Я хочу напрямую использовать перечисления, чтобы указать, хочу ли я использовать Redis или Caffeine.
Представлены следующие функции:
Архитектура программного обеспечения
Инструкция по установке
Я не публиковал его в своём частном репозитории, вы можете опубликовать его в своём собственном частном репозитории.
Для установки в локальный репозиторий для тестирования выполните следующую команду: mvn clean install.
Чтобы опубликовать в удаленном репозитории Maven и выпустить его, выполните следующие шаги:
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://{Ваш частный адрес}/repository/maven-releases/</url>
</repository>
</distributionManagement>
<dependency>
<groupId>org.madcat</groupId>
<artifactId>spring-boot-starter-jcache</artifactId>
<version>1.0-RELEASE</version>
</dependency>
Использование
Добавьте аннотацию @JEnableCaching к классу запуска, чтобы включить функцию. Обратите внимание, что если ваш файл конфигурации использует конфигурацию spring.cache, эта конфигурация будет использоваться напрямую, и все расширенные функции этого компонента будут отключены (то есть исходная конфигурация имеет более высокий приоритет).
@JCacheable(value = "jkdd:shop_auth", cacheType = CacheType.REDIS, key = "#shopId", expireTime = 3600, timeunit = TimeUnit.SECONDS)
Redis зависит от исходной конфигурации Redis ConnectionFactory, здесь опущено описание пула соединений, jedis.lettuce — это реализация этого интерфейса.
spring.redis.database=1
spring.redis.host=127.0.0.1
spring.redis.password=123
spring.redis.port=6701
Реализуйте интерфейс 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 )