自定义spring starter连接redis
配置参数
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
* @author tonfu.chia
* Created by 2019-06-21
*/
@Configuration
@Slf4j
@Data
public class JedisProperties {
@Value("${bcs.redis.sentinel.master}")
private String masterName;
@Value("${bcs.redis.sentinel.nodes}")
private String nodes;
@Value("${bcs.redis.timeout}")
private int timeout;
@Value("${bcs.redis.pool.max-idle}")
private int maxIdle;
@Value("${bcs.redis.pool.max-wait-millis}")
private long maxWaitMillis;
@Value("${bcs.redis.pool.max-total}")
private int maxTotal;
@Value("${bcs.redis.pool.min-idle}")
private int minIdle;
@Value("${bcs.redis.password}")
private String password;
}
初始化jedisPool,我这里是使用的哨兵集群模式,和普通连接有点区别
@Bean
public JedisSentinelPool bcsJedisSentinelPool() {
String[] nodes = properties.getNodes().split(",");
Set<String> set = new HashSet<>(Arrays.asList(nodes));
// set.add("192.168.9.72:6389");
// set.add("192.168.9.73:6390");
// set.add("192.168.46.150:6387");
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(properties.getMaxIdle());
jedisPoolConfig.setMinIdle(properties.getMinIdle());
jedisPoolConfig.setMaxWaitMillis(properties.getMaxWaitMillis());
jedisPoolConfig.setMaxTotal(properties.getMaxTotal());
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
jedisPoolConfig.setTestWhileIdle(true);
JedisSentinelPool jedisSentinelPool =
new JedisSentinelPool(properties.getMasterName(), set, jedisPoolConfig,
properties.getTimeout(), properties.getPassword());
return jedisSentinelPool;
}
连接redis,使用jedis客户端,每次使用时从pool里获取,使用后close掉。
@Autowired
JedisSentinelPool jedisSentinelPool;
/**
* 执行
*/
private void execute() {
Jedis jedis = null;
try {
jedis = jedisSentinelPool.getResource();
//执行redis命令,业务代码
} catch (Exception e) {
} finally {
if (jedis != null) {
jedis.close();
}
}
}
写的比较跳跃,如果有什么需要了解的,可以给我留言,只是记录下工作中的代码片段。