添加依赖:
spring-boot-starter-cache
spring-boot-starter-data-redis
启用缓存:
@EnableCaching
配置 Redis:(非必须)
spring.redis.host=localhost
...
更多配置项查看文档
配置 Cache:
主要通过 JavaConfig 可配置 RedisTemplate 与 cacheManager
Key 序列化策略:
@Autowired
private RedisTemplate redisTemplate;
@Bean
public RedisTemplate customizeRedisTemplate() {
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
配置 cacheManager 全局参数:
@Bean
public RedisCacheManager cacheManager(RedisKeyDefine redisKeyDefine) {
RedisCacheManager cacheManager = new RedisCacheManager(customizeRedisTemplate());
cacheManager.setUsePrefix(true);
cacheManager.setDefaultExpiration(1800);
cacheManager.setCacheNames(redisKeyDefine.getExpiresMap().keySet());
cacheManager.setExpires(redisKeyDefine.getExpiresMap());
return cacheManager;
}
RedisKeyDefine:(该类作用类似 ehcache.xml)
@Component
public class RedisKeyDefine {
// 定义缓存名
public static final String CACHENAME_HELLO = "CACHE_HELLO";
private Map<String, Long> expiresMap;
@PostConstruct
public void init() {
expiresMap = new HashMap<String, Long>();
expiresMap.put(CACHENAME_CATEGORY, 0L);
}
public Map<String, Long> getExpiresMap() {
return expiresMap;
}
}
使用缓存:
使用 @Cacheable 等注解需要缓存的方法,相关文档
默认情况 value 的值将作为 key 的前缀 ,可通过 cacheManager.setUsePrefix 方法修改
这里与 ehcache 的 cache 与 element 机制有所区别
缓存管理:
使用 RedisTemplate 来操作获取与删除 Key
如果数据量过大,不建议在应用中获取与操作 key ,有可能造成一次性加载过多 key 且不能分页
建议使用 Redis 客户端 redis-cli 或 图形客户端 https://redisdesktop.com 等进行管理