1、引入redis依赖
<!-- 引入 redis 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2、application.properties 配置redis相关链接
3、配置RedisConfig
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
String hostName;
@Value("${spring.redis.port}")
int port;
@Value("${spring.redis.password}")
String password;
@Value("${jedis.pool.maxIdle}")
int maxIdle;
@Value("${jedis.pool.maxTotal}")
int maxTotal;
@Value("${spring.redis.database}")
int index;
@Value("${jedis.pool.maxWaitMillis}")
long maxWaitMillis;
@Value("${jedis.pool.testOnBorrow}")
boolean testOnBorrow;
@Value("${jedis.pool.testOnReturn}")
boolean testOnReturn;
@Bean(name = "customStringTemplate")
public StringRedisTemplate stringRedisTemplate() {
StringRedisTemplate template = new StringRedisTemplate();
return (StringRedisTemplate) getRedisTemplate(template);
}
@Bean(name = "customRedisTemplate")
public RedisTemplate redisTemplate() {
RedisTemplate template = new RedisTemplate();
return getRedisTemplate(template);
}
public RedisTemplate getRedisTemplate(RedisTemplate template){
template.setConnectionFactory(connectionFactory());
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//序列化 值时使用此序列化方法
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
public RedisConnectionFactory connectionFactory() {
JedisConnectionFactory jedis = new JedisConnectionFactory();
jedis.setHostName(hostName);
jedis.setPort(port);
if (!StringUtils.isEmpty(password)) {
jedis.setPassword(password);
}
if (index != 0) {
jedis.setDatabase(index);
}
jedis.setPoolConfig(poolCofig());
// 初始化连接pool
jedis.afterPropertiesSet();
RedisConnectionFactory factory = jedis;
return factory;
}
public JedisPoolConfig poolCofig() {
JedisPoolConfig poolCofig = new JedisPoolConfig();
poolCofig.setMaxIdle(maxIdle);
poolCofig.setMaxTotal(maxTotal);
poolCofig.setMaxWaitMillis(maxWaitMillis);
poolCofig.setTestOnBorrow(testOnBorrow);
poolCofig.setTestOnReturn(testOnReturn);
return poolCofig;
}
}
4、配置RedisOperator.java
@Component
public class RedisOperator {
@Autowired
@Qualifier("customStringTemplate")
private StringRedisTemplate stingRedisTemplate;
@Autowired
@Qualifier("customRedisTemplate")
private RedisTemplate redisTemplate;
public StringRedisTemplate getStringRedisTemplate(int index){
return (StringRedisTemplate) getTemplate(stingRedisTemplate,index);
}
public RedisTemplate getRedisTemplate(int index){
return getTemplate(redisTemplate,index);
}
public RedisTemplate getTemplate(RedisTemplate redisTemplate,int index) {
JedisConnectionFactory jedisConnectionFactory = (JedisConnectionFactory) redisTemplate.getConnectionFactory();
jedisConnectionFactory.setDatabase(index);
redisTemplate.setConnectionFactory(jedisConnectionFactory);
return redisTemplate;
}
public void set(int index,String key, String value) {
getStringRedisTemplate(index).opsForValue().set(key, value);
}
public void set(int index,String key, Object value) {
getRedisTemplate(index).opsForValue().set(key,value);
}
public String get(int index,String key) {
return (String)getStringRedisTemplate(index).opsForValue().get(key);
}
public Object getObject(int index,String key) {
return getRedisTemplate(index).opsForValue().get(key);
}
}
4、测试