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

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 =</
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值