В чем разница между RedisCacheWriter и RedisTemplate - PullRequest
0 голосов
/ 16 ноября 2018
JedisConnectionFactory jedisConnectionFactory() {
    RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("localhost", 6379);
    return new JedisConnectionFactory(redisStandaloneConfiguration);
}

вариант 1: использование RedisCacheWriter

public RedisCacheManager getRedisCacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheWriter cacheWriter = RedisCacheWriter.lockingRedisCacheWriter(connectionFactory);
    ClassLoader loader = this.getClass().getClassLoader();
    JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader);
    SerializationPair<Object> pair = SerializationPair.fromSerializer(jdkSerializer);

    RedisCacheConfiguration cacheConfig = RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair);
    cacheConfig = cacheConfig.entryTtl(Duration.ofSeconds(3600));


    Map<String, RedisCacheConfiguration> initialCacheConfigurations = new HashMap<>();
    initialCacheConfigurations.put("order",cacheConfig.entryTtl(Duration.ofSeconds(1600)));


    RedisCacheManager cacheManager = new RedisCacheManager(cacheWriter, cacheConfig,initialCacheConfigurations);

    return cacheManager;
}

@Bean
public CacheManager cacheManager() {
    RedisCacheManager cacheManager=getRedisCacheManager(jedisConnectionFactory());
    log.info("CacheManager created ");
    return cacheManager;
}

вариант 2: RedisTemplate

@Bean
RedisTemplate<Object, Object> redisTemplate() {
    RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>();
    redisTemplate.setConnectionFactory(jedisConnectionFactory());
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    return redisTemplate;
}

@Bean
CacheManager cacheManager() {

    //JedisConnectionFactory cacheManager=jedisConnectionFactory();
    RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate());
    cacheManager.setDefaultExpiration(60);
    cacheManager.setUsePrefix(true);            
    return cacheManager;
}

В чем разница между RedisCacheManager и RedisTemplate? Между обоими классами существует значительная разница в потреблении памяти. Это что-то относительно их внутренней реализации хранения в кеше?
Springboot 2.x имеет RedisCacheWriter, но в Springboot 1.4.3 мы должны использовать RedisTemplate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...