gpt4 book ai didi

java - RediscacheManager 实例,Spring data redis 版本高于 2.0x

转载 作者:可可西里 更新时间:2023-11-01 11:23:16 25 4
gpt4 key购买 nike

我之前使用的是 Spring Data Redis 1.4.4 版本。由于除了连接超时外,我还必须配置读取超时,因此我已将版本升级到 2.1.6。但是现在我无法使用 RedisTemplate 创建 Rediscachemanager 实例,因为它已从 spring data redis 2.0 版中弃用。有人可以帮忙用升级版本实现以下类似配置(使用 RedisTemplate 进行键/值序列化)。

final JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
redisConnectionFactory.setHostName(redisHost);
redisConnectionFactory.setTimeout(10000);
redisConnectionFactory.setPort(port);
redisConnectionFactory.setUsePool(true);
redisConnectionFactory.afterPropertiesSet();

@Bean(name = "redisCacheManager")
public CacheManager cacheManager(final RedisTemplate<String,Object> redisTemplate) {
final RedisCacheManager manager = new RedisCacheManager(redisTemplate());
manager.setDefaultExpiration(Long.parseLong(expiryInSecs));
return manager;
}

@Bean(name="redisTemplate")
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(stringRedisSerializer());
redisTemplate.setHashKeySerializer(stringRedisSerializer());
redisTemplate.setValueSerializer(stringRedisSerializer());
redisTemplate.setHashValueSerializer(stringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}

最佳答案

如果您将 Spring Data Redis 和 Lettuce 作为驱动程序(我推荐),则需要以下配置:

  @Bean
public RedisConnectionFactory connectionFactory() {
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.commandTimeout(Duration.ofSeconds(2))
.shutdownTimeout(Duration.ZERO)
.build();

return new LettuceConnectionFactory(new RedisStandaloneConfiguration("localhost", 6379), clientConfig);
}

@Bean(name = "redisCacheManager")
public CacheManager cacheManager(final RedisConnectionFactory factory) {
Duration expiration = Duration.ofSeconds(12345);

RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager
.builder(factory)
.cacheDefaults(RedisCacheConfiguration.defaultCacheConfig().entryTtl(expiration));


return builder.build();
}

@Bean(name="redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
redisTemplate.setKeySerializer(stringRedisSerializer());
redisTemplate.setHashKeySerializer(stringRedisSerializer());
redisTemplate.setValueSerializer(stringRedisSerializer());
redisTemplate.setHashValueSerializer(stringRedisSerializer());
return redisTemplate;
}

关于java - RediscacheManager 实例,Spring data redis 版本高于 2.0x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57471903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com