spring jedis 配置

Posted 下一站你要去哪里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring jedis 配置相关的知识,希望对你有一定的参考价值。


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 配置的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2.x Redis多数据源配置(jedis,lettuce)

spring boot中使用redis -Jedis

Spring集成Jedis(不依赖spring-data-redis)(单机/集群模式)(待实践)

redis集群配置,spring整合jedis,缓存同步

spring配置jedispool会自动回收吗

Redis + Jedis + Spring整合遇到的异常(转)