redis cluster java client jedisCluster spring集成方法
2015-11-24 19:20
666 查看
1、使用jedis的原生JedisCluster
spring的applicationContext.xml配置redis的连接、连接池、jedisCluster Bean
redis.xml的配置:
jedisCluster的使用:
2、自定义spring工厂类生产jedisCluster
JedisClusterFactory.java
spring的applicationContext.xml配置redis的连接池和工厂bean
redis.xml配置
jedisCluster的使用
spring的applicationContext.xml配置redis的连接、连接池、jedisCluster Bean
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:redis.properties</value> </list> </property> </bean> <!-- redis config start --> <!-- redis pool config --> <bean id="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig"> <property name="maxTotal" value="${redis.maxActive}" /> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxWaitMillis" value="${redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}"/> </bean> <!-- jedisCluster config --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg index="0"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg type="String" value="${redis.host1}"/> <constructor-arg type="int" value="${redis.port1}"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg type="String" value="${redis.host2}"/> <constructor-arg type="int" value="${redis.port2}"/> </bean> </set> </constructor-arg> <constructor-arg index="1" ref="genericObjectPoolConfig" /> </bean> <!-- redis config end -->
redis.xml的配置:
#redis config redis.maxActive=1000 redis.maxIdle=10 redis.maxWaitMillis=30000 redis.testOnBorrow=true #redis host and port config redis.host1=192.168.1.2 redis.port1=6379 redis.host2=192.168.1.2 redis.port2=6380
jedisCluster的使用:
@Autowired private JedisCluster jedisClust;
2、自定义spring工厂类生产jedisCluster
JedisClusterFactory.java
package com.www.core.utils; import java.util.HashSet; import java.util.Properties; import java.util.Set; import java.util.regex.Pattern; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; public class JedisClusterFactory implements FactoryBean<JedisCluster>, InitializingBean { private String address; 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<? extends JedisCluster> getObjectType() { return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class); } @Override public boolean isSingleton() { return true; } private Set<HostAndPort> parseHostAndPort() throws Exception { try { String[] addressArr=address.trim().split(","); Set<HostAndPort> haps = new HashSet<HostAndPort>(); for(String addressStr:addressArr){ String[] ipAndPort = addressStr.trim().split(":"); HostAndPort hap = new HostAndPort(ipAndPort[0].trim(), Integer.parseInt(ipAndPort[1].trim())); haps.add(hap); } return haps; } catch (IllegalArgumentException ex) { throw ex; } catch (Exception ex) { throw new Exception("解析 jedis 配置文件失败", ex); } } @Override public void afterPropertiesSet() throws Exception { Set<HostAndPort> haps = this.parseHostAndPort(); jedisCluster = new JedisCluster(haps, timeout, maxRedirections,genericObjectPoolConfig); } public void setTimeout(int timeout) { this.timeout = timeout; } public void setMaxRedirections(int maxRedirections) { this.maxRedirections = maxRedirections; } /** * @Param String address to set */ public void setAddress(String address) { this.address = address; } public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) { this.genericObjectPoolConfig = genericObjectPoolConfig; } }
spring的applicationContext.xml配置redis的连接池和工厂bean
<!-- redis连接配置 start--> <bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" > <property name="maxIdle" value="${redis.maxIdle}"/> <property name="maxTotal" value="${redis.maxTotal}"/> <property name="minIdle" value="${redis.minIdle}" /> </bean> <!-- redis连接配置 end--> <bean id="jedisCluster" class="com.www.core.utils.JedisClusterFactory"> <property name="address" value="${redis.adress}" /> <property name="timeout" value="${redis.timeout}" /> <property name="maxRedirections" value="${redis.maxRedirections}" /> <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" /> </bean>
redis.xml配置
#redis config redis.maxTotal=200 redis.maxIdle=50 redis.minIdle=10 #redis host and port config redis.adress=192.168.1.2:6379,192.168.1.2:6380,192.168.1.2:6381 redis.timeout=300000 redis.maxRedirections=6
jedisCluster的使用
@Autowired private JedisCluster jedisCluster;
相关文章推荐
- Linux服务器下搭建(jdk+mysql+tomcat+cmake+redis)
- 30个php操作redis常用方法代码例子
- php 将session记录到redis中
- php连接redis的操作库predis操作大全
- redis 初级设置
- logstash无法读取redis数据
- centos 安装 redis
- 分析Redis架构设计
- python+redis测试环境搭建
- API访问频率限制的解决方案
- LANMP环境下安装redis以及为php7安装redis扩展
- redis基础-windows
- Linux服务器 Nginx+JDK+Tomcat+MySQL+Solr+Redis 全套安装与设置
- nginx+tomcat+redis负载均衡及session共享
- 15天玩转redis —— 第八篇 你不得不会的事务玩法
- 关于redis在spring上的密码配置问题
- Redis几个认识误区(3)
- redis下载地址
- redis常用数据机构及操作整理
- 超强、超详细Redis数据库入门教程(2)