首页 > 编程语言 > 详细

spring jedis 配置

时间:2018-03-16 23:19:19      阅读:237      评论:0      收藏:0      [点我收藏+]


1、自定义一个工厂类,实现FactoryBean 交由spring管理
public class JedisClusterFactory implements FactoryBean<JedisCluster> {

private String hostAndPort;

private JedisCluster jedisCluster;

private Integer timeout;

private Integer maxRedirections;

private GenericObjectPoolConfig genericObjectPoolConfig;

private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$");

@Override
public JedisCluster getObject() throws Exception {
return jedisCluster;
}

@Override
public Class<?> getObjectType() {
return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);
}

@Override
public boolean isSingleton() {
return true;
}

private Set<HostAndPort> parseHostAndPort() throws Exception {
try {

Set<HostAndPort> haps = new HashSet<HostAndPort>();
String[] strArray = hostAndPort.split(",");
for (String str : strArray) {

boolean isIpPort = p.matcher(str).matches();

if (!isIpPort) {
throw new IllegalArgumentException("ip 或 port 不合法");
}
String[] ipAndPort = str.split(":");

HostAndPort hap = new HostAndPort(ipAndPort[0],
Integer.parseInt(ipAndPort[1]));
haps.add(hap);
}

return haps;
}
catch (IllegalArgumentException ex) {
throw ex;
}
catch (Exception ex) {
throw new Exception("解析 jedis 配置文件失败", ex);
}
}

public void afterPropertiesSet() throws Exception {
Set<HostAndPort> haps = this.parseHostAndPort();
jedisCluster = new JedisCluster(haps, timeout, maxRedirections, genericObjectPoolConfig);

}

public void setHostAndPort(String hostAndPort) {
this.hostAndPort = hostAndPort;
}

public void setTimeout(int timeout) {
this.timeout = timeout;
}

public void setMaxRedirections(int maxRedirections) {
this.maxRedirections = maxRedirections;
}

public void setGenericObjectPoolConfig(
GenericObjectPoolConfig genericObjectPoolConfig) {
this.genericObjectPoolConfig = genericObjectPoolConfig;
}
}

 

2、配置文件:
<bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
<property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" />
<property name="maxTotal" value="${redis.pool.maxActive}" />
<property name="minIdle" value="${redis.pool.minIdle}" />
<property name="maxIdle" value="${redis.pool.maxIdle}" />
</bean>

<bean id="jedisCluster" class="com.bbw.redis.JedisClusterFactory" init-method="afterPropertiesSet" >
<property name="hostAndPort" value="${redis.pool.host}"/>
<property name="timeout" value="${redis.pool.timeout}" />
<property name="maxRedirections" value="${redis.pool.maxRedirections}" />
<property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" />
</bean>



3、在spring 里面注解使用:

@Autowired
JedisCluster jedisCluster;

spring jedis 配置

原文:https://www.cnblogs.com/wangjiesheng/p/8586355.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!