快速体验缓存
-
步骤:
-
1、开启基于注解的缓存 @EnableCaching
-
2、标注缓存注解即可
-
@Cacheable
-
@CacheEvict
-
@CachePut
默认使用的是ConcurrentMapCacheManager==ConcurrentMapCache;将数据保存在 ConcurrentMap<Object, Object>中
使用redis替换默认缓存管理器
-
引入starter(略) ,引入启动器后redis就可以使用,利用相应的redisTemplate即可操作redis(自动注入)
-
配置redis主机地址
spring.redis.host=118.24.44.169
-
自定义序列化器(使用json序列化替换默认的 jdk序列化(重量级))
//此段代码可以抄RedisAutoConfiguration下的配置 只需更改设置Jackson2JsonRedisSerializer即可,再将RedisTemplate添加到容器即可 //在使用时注意自动注入的策略,引入已配置的bean即可完成序列化器替换 @Bean public RedisTemplate<Object, Employee> empRedisTemplate( RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<Object, Employee> template = new RedisTemplate<Object, Employee>(); template.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer<Employee> ser = new Jackson2JsonRedisSerializer<Employee>(Employee.class); template.setDefaultSerializer(ser); return template; }
-
自定义CacheManager
注意:在引入redis启动器的时候,RedisCacheManager也已经添加到容器中,默认的缓存管理器已被替换,但是默认的RedisCacheManager使用的是默认的RedisTemplate,想要使用自己的RedisTemplate(例如,使用json序列化)就需要自定义CacheManager//此段代码可以参考RedisCacheConfiguration下 缓存管理器的配置 @Primary //将某个缓存管理器作为默认的 @Bean public RedisCacheManager employeeCacheManager(RedisTemplate<Object, Employee> empRedisTemplate/*此处将自动注入我们的自定义的RedisTemplate*/){ RedisCacheManager cacheManager = new RedisCacheManager(empRedisTemplate); //key多了一个前缀 //使用前缀,默认会将CacheName作为key的前缀 cacheManager.setUsePrefix(true); return cacheManager; }
这样就替换了默认的RedisCacheManager
当我们配置多个缓存管理器的时候,可在使用缓存的时候指定要使用的缓存管理器