(1)、添加依赖
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-data-redis</artifactId> 4 </dependency>
(2)、配置Redis
1 spring.redis.host=192.168.205.128
(3)、使用
配置好Redis后,缓存注解就会把数据缓存到Redis中了,如果我们想要手动添加缓存可以使用
StringRedisTemplate 仅仅操作字符串
RedisTemplate 操作Key-Value对象
**Redis默认使用Jdk序列化机制(将对象序列化到Redis中必须要实现Serializable接口且缓存的数据是二进制),若要将数据以Json的形式序列化,可采用以下两种方式
1.使用第三方jar包将对象转化为json
2.更改redisTemplate默认的序列化规则
1 package cn.coreqi.config; 2 3 import cn.coreqi.entities.User; 4 import org.springframework.context.annotation.Bean; 5 import org.springframework.context.annotation.Configuration; 6 import org.springframework.context.annotation.Primary; 7 import org.springframework.data.redis.cache.RedisCacheConfiguration; 8 import org.springframework.data.redis.cache.RedisCacheManager; 9 import org.springframework.data.redis.cache.RedisCacheWriter; 10 import org.springframework.data.redis.connection.RedisConnectionFactory; 11 import org.springframework.data.redis.core.RedisTemplate; 12 import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; 13 14 @Configuration 15 public class MyRedisConfig { 16 @Bean 17 public RedisTemplate<Object, User> userRedisTemplate(RedisConnectionFactory redisConnectionFactory){ 18 RedisTemplate<Object, User> template = new RedisTemplate<>(); 19 template.setConnectionFactory(redisConnectionFactory); 20 template.setDefaultSerializer(new Jackson2JsonRedisSerializer<User>(User.class)); 21 return template; 22 } 23 24 @Primary 25 @Bean 26 public RedisCacheManager userCacheManager(RedisConnectionFactory redisConnectionFactory){ 27 RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); 28 return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)) 29 .cacheDefaults(configuration).build(); 30 } 31 }
1 @Service 2 @CacheConfig(cacheNames = "user",cacheManager = "userCacheManager") //抽取缓存的公共配置 3 //可以使用@Caching注解在方法上运用多个缓存注解 4 public class UserService { 5 ....... 6 }
*如何在代码中获取缓存
1 @Qualifier("userCacheManager") 2 @Autowired 3 private RedisCacheManager userCacheManager; 4 5 public User cache(){ 6 Cache user = userCacheManager.getCache("user"); 7 return user.get("1",User.class); 8 }
原文:https://www.cnblogs.com/fanqisoft/p/10351016.html