redis配置類java
package com.antong.api.config.spring; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.CacheErrorHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class); @Value("${spring.redis.host}") private String redis_hostname; @Value("${spring.redis.port}") private int redis_port; @Bean public JedisConnectionFactory redisConnectionFactory() { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); redisConnectionFactory.setHostName(redis_hostname); redisConnectionFactory.setPort(redis_port); return redisConnectionFactory; } @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory cf) { RedisTemplate<String, String> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(cf); return redisTemplate; } @Bean public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); //設置一個默認的過時時間, 單位(秒) cacheManager.setDefaultExpiration(300); return cacheManager; } 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()); }}; } }
代碼中使用 @Cacheable @CacahePut 等註解實現緩存redis