背景:公司项目有两个 redis
,一个是 sso
使用,一个是业务使用,为了区分,需要自定义 RedisTemplate
- 自定义
RedisTemplate
import org.springframework.data.redis.core.StringRedisTemplate;
/**
* @author liuyuan
* @version ItemBuyerRedisTemplate.java, v 0.1 2024-03-15 16:27
*/
public class ItemBuyerRedisTemplate extends StringRedisTemplate {
}
- 配置
RedisTemplate
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
/**
* @author liuyuan
* @version ItemRedisConfiguration.java, v 0.1 2024-03-15 15:49
*/
@Configuration
public class ItemRedisConfiguration {
@Value("${item.buyer_redis_host}")
private String buyerRedisHost;
@Value("${spring-redis-port:6379}")
private int buyerRedisPort;
@Value("${spring-redis-database:1}")
private int buyerRedisDatabase;
@Bean
public ItemBuyerRedisTemplate itemBuyerRedisTemplate() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(buyerRedisHost);
redisStandaloneConfiguration.setPort(buyerRedisPort);
redisStandaloneConfiguration.setDatabase(buyerRedisDatabase);
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
// 初始化
lettuceConnectionFactory.afterPropertiesSet();
ItemBuyerRedisTemplate stringRedisTemplate = new ItemBuyerRedisTemplate();
stringRedisTemplate.setConnectionFactory(lettuceConnectionFactory);
return stringRedisTemplate;
}
@Primary
@Bean
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
return new StringRedisTemplate(redisConnectionFactory);
}
}