springboot2.x integrates redis cache

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




Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326686626&siteId=291194637