Springboot整合Cache缓存组件(Redis,Caffine,Jetcache,EhCache等)

本文详细介绍了如何在Springboot中整合并使用多种缓存组件,包括SpringBootCache注解、Caffine内存缓存、JetCache双缓存、EhCache以及Memcache。内容涵盖依赖添加、配置项设定、注解使用以及API操作,为读者提供了一个全面的缓存集成教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Springboot整合缓存组件

主要包括:

  • springboot-cache以及注解使用
  • springboot-data-redis分布式缓存–【这里省略会有专题介绍】
  • caffine 内存缓存插件
  • jetcache2 双缓存插件
  • memcached 缓存插件
  • ehcache 缓存插件

一、spring-boot-cache快速入门

1、添加依赖
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
2、添加配置项
spring:
  cache:
    type: caffeine  # 这里可以改成redis,jetcache
    cache-names:
    - getPersonById  # 指定缓存名称
    - name2
    caffeine:
      spec: maximumSize=500,expireAfterWrite=5s   # 缓存配置


3、添加各种方式的注解
//使用Redis作为缓存
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{
   
    private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class);

    @Autowired
    private Environment env;

    @Bean
    public JedisConnectionFactory redisConnectionFactory() {
   
        JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
        redisConnectionFactory.setHostName(env.getProperty("redis.hostname"));
        redisConnectionFactory.setPort(Integer.parseInt(env.getProperty("redis.port")));
        return redisConnectionFactory;
    }

    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) {
   
        RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(cf);
        return redisTemplate;
    }
    // 将RedisCacheManager注入到CacheManager
    @Bean
    public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) {
   
        RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
        cacheManager.setDefaultExpiration(600);
        return cacheManager;
    }
	@Bean
    public KeyGenerator keyGenerator() {
   
        return new KeyGenerator() {
   
            @Override
            public Object generate(Object target, Method method, Object... params) {
   
                StringBuilder sb = new StringBuilder();
                //类名+方法名
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (Object obj : params) {
   
                    sb.append(obj.toString());
                }
                return sb.toString();
            }

        };
    }
    public CacheErrorHandler errorHandler() {
   
        return new CacheErrorHandler(){
   
            @Override
            public void handleCacheGetError(RuntimeException exception, Cache cache, Object key) {
   
                logger.warn("handleCacheGetError in redis: {}", exception.getMessage());
            }
            @Override
            public void handleCachePutError(RuntimeException exception, Cache cache, Object key, Object value) {
   
                logger.warn("handleCachePutError in redis: {}", exception.getMessage());
            }
            @Override
            public void handleCacheEvictError(RuntimeException exception, Cache cache, Object key) {
   
                logger.warn("handleCacheEvictError in redis: {}", exception.getMessage());
            }
            @Override
            public void handleCacheClearError(RuntimeException exception, Cache cache) {
   
                logger.warn("handleCacheClearError in redis: {}", exception.getMessage());
            }};
    }
}
//使用GuavaCache缓存
@Configuration
public class GuavaCacheConfig {
   
    @Bean
    public CacheManager getCacheManager() {
   
        GuavaCacheManager cacheManager =</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值