1. Introduce pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2.application.yml
spring: say again: #Database index database: 0 host: 127.0.0.1 port: 6379 password: 123456 jedis: pool: #Maximum number of connections max-active: 8 #Maximum blocking wait time (negative number means no limit) max-wait: -1 #max idle max-idle: 8 #Minimum idle min-idle: 0 #Connection timeout timeout: 10000
3.RedisConfig.java
/** * Redis cache configuration class * @author szekinwin * */ @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { //cache manager @Bean public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { //user information cache configuration RedisCacheConfiguration userCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(10)).disableCachingNullValues().prefixKeysWith("user"); Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>(); redisCacheConfigurationMap.put("user", userCacheConfiguration); //Initialize a RedisCacheWriter RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory); // Set the value serialization method of CacheManager to JdkSerializationRedisSerializer, but in fact, RedisCacheConfiguration uses StringRedisSerializer to serialize key by default, and JdkSerializationRedisSerializer to serialize value, so the following comment code is the default implementation // ClassLoader loader = this.getClass().getClassLoader(); // JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader); // RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jdkSerializer); // RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair); RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig(); //Set the default expiration time to 30 seconds defaultCacheConfig.entryTtl(Duration.ofSeconds(30)); //Initialize RedisCacheManager RedisCacheManager cacheManager = new RedisCacheManager(redisCacheWriter, defaultCacheConfig, redisCacheConfigurationMap); return cacheManager; } }
3.UserService.java
@Service public class UserService { @Autowired StringRedisTemplate stringRedisTemplate; @Autowired RedisTemplate redisTemplate; @Cacheable(value = "user", key ="#id", unless = "#result==null") public String getUser(int id) { System.out.println("i am from userService"); System.out.println(stringRedisTemplate.getValueSerializer()); System.out.println(redisTemplate.getValueSerializer()); return "fee"; } }
4.UserController.java
@RestController public class UserController { @Autowired UserService userService; @GetMapping("getUser") public String getUser() { return userService.getUser(001); } }
5. Visit http://127.0.0.1:8080/getUser