Java集成redis集群
来源:互联网 发布:上海网络推广铭心科技 编辑:程序博客网 时间:2024/06/11 15:35
spring-redis.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> <!-- jedis cluster config --> <bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" > <property name="maxWaitMillis" value="-1" /> <property name="maxTotal" value="1000" /> <property name="minIdle" value="8" /> <property name="maxIdle" value="100" /> </bean> <bean id="jedisCluster" class="qgs.npms.redis.JedisClusterFactory"> <property name="addressConfig"> <value>classpath:/redis/redis-config.properties</value> </property> <property name="addressKeyPrefix" value="address" /> <property name="timeout" value="300000" /> <property name="maxRedirections" value="6" /> <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" /> </bean></beans>
自己创建一个类JedisClusterFactory:
import java.util.HashSet;import java.util.Iterator;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 Resource addressConfig; private String addressKeyPrefix; private JedisCluster jedisCluster; private Integer timeout; private Integer maxRedirections; private GenericObjectPoolConfig genericObjectPoolConfig; private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$"); public JedisClusterFactory() { } public JedisCluster getObject() throws Exception { return this.jedisCluster; } public Class<? extends JedisCluster> getObjectType() { return this.jedisCluster != null?this.jedisCluster.getClass():JedisCluster.class; } public boolean isSingleton() { return true; } private Set<HostAndPort> parseHostAndPort() throws Exception { try { Properties ex = new Properties(); ex.load(this.addressConfig.getInputStream()); HashSet haps = new HashSet(); Iterator i$ = ex.keySet().iterator(); while(i$.hasNext()) { Object key = i$.next(); if(((String)key).startsWith(this.addressKeyPrefix)) { String val = (String)ex.get(key); boolean isIpPort = this.p.matcher(val).matches(); if(!isIpPort) { throw new IllegalArgumentException("ip 或 port 不合法"); } String[] ipAndPort = val.split(":"); HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseInt(ipAndPort[1])); haps.add(hap); } } return haps; } catch (IllegalArgumentException var9) { throw var9; } catch (Exception var10) { throw new Exception("解析 jedis 配置文件失败", var10); } } public void afterPropertiesSet() throws Exception { Set haps = this.parseHostAndPort(); this.jedisCluster = new JedisCluster(haps, this.timeout.intValue(), this.maxRedirections.intValue(), this.genericObjectPoolConfig); } public void setAddressConfig(Resource addressConfig) { this.addressConfig = addressConfig; } public void setTimeout(int timeout) { this.timeout = Integer.valueOf(timeout); } public void setMaxRedirections(int maxRedirections) { this.maxRedirections = Integer.valueOf(maxRedirections); } public void setAddressKeyPrefix(String addressKeyPrefix) { this.addressKeyPrefix = addressKeyPrefix; } public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) { this.genericObjectPoolConfig = genericObjectPoolConfig; }}
redis-config.properties:
address1=192.168.1.36:6379address2=192.168.1.37:6379address3=192.168.1.38:6379address4=192.168.1.40:6379address5=192.168.1.41:6379address6=192.168.1.42:6379
Java调用:
@Autowired
private JedisCluster jedisCluster; //jedisCluster就是对应的bean id 可以自动注入
System.out.println(jedisCluster.get("foo"));
System.out.println(jedisCluster.set("qq","222"));
System.out.println(jedisCluster.get("qq"));
spring-redis.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> <!-- jedis cluster config --> <bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" > <property name="maxWaitMillis" value="-1" /> <property name="maxTotal" value="1000" /> <property name="minIdle" value="8" /> <property name="maxIdle" value="100" /> </bean> <bean id="jedisCluster" class="qgs.npms.redis.JedisClusterFactory"> <property name="addressConfig"> <value>classpath:/redis/redis-config.properties</value> </property> <property name="addressKeyPrefix" value="address" /> <property name="timeout" value="300000" /> <property name="maxRedirections" value="6" /> <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" /> </bean></beans>
自己创建一个类JedisClusterFactory:
import java.util.HashSet;import java.util.Iterator;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 Resource addressConfig; private String addressKeyPrefix; private JedisCluster jedisCluster; private Integer timeout; private Integer maxRedirections; private GenericObjectPoolConfig genericObjectPoolConfig; private Pattern p = Pattern.compile("^.+[:]\\d{1,5}\\s*$"); public JedisClusterFactory() { } public JedisCluster getObject() throws Exception { return this.jedisCluster; } public Class<? extends JedisCluster> getObjectType() { return this.jedisCluster != null?this.jedisCluster.getClass():JedisCluster.class; } public boolean isSingleton() { return true; } private Set<HostAndPort> parseHostAndPort() throws Exception { try { Properties ex = new Properties(); ex.load(this.addressConfig.getInputStream()); HashSet haps = new HashSet(); Iterator i$ = ex.keySet().iterator(); while(i$.hasNext()) { Object key = i$.next(); if(((String)key).startsWith(this.addressKeyPrefix)) { String val = (String)ex.get(key); boolean isIpPort = this.p.matcher(val).matches(); if(!isIpPort) { throw new IllegalArgumentException("ip 或 port 不合法"); } String[] ipAndPort = val.split(":"); HostAndPort hap = new HostAndPort(ipAndPort[0], Integer.parseInt(ipAndPort[1])); haps.add(hap); } } return haps; } catch (IllegalArgumentException var9) { throw var9; } catch (Exception var10) { throw new Exception("解析 jedis 配置文件失败", var10); } } public void afterPropertiesSet() throws Exception { Set haps = this.parseHostAndPort(); this.jedisCluster = new JedisCluster(haps, this.timeout.intValue(), this.maxRedirections.intValue(), this.genericObjectPoolConfig); } public void setAddressConfig(Resource addressConfig) { this.addressConfig = addressConfig; } public void setTimeout(int timeout) { this.timeout = Integer.valueOf(timeout); } public void setMaxRedirections(int maxRedirections) { this.maxRedirections = Integer.valueOf(maxRedirections); } public void setAddressKeyPrefix(String addressKeyPrefix) { this.addressKeyPrefix = addressKeyPrefix; } public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) { this.genericObjectPoolConfig = genericObjectPoolConfig; }}
redis-config.properties:
address1=192.168.1.36:6379address2=192.168.1.37:6379address3=192.168.1.38:6379address4=192.168.1.40:6379address5=192.168.1.41:6379address6=192.168.1.42:6379
Java调用:
@Autowired
private JedisCluster jedisCluster; //jedisCluster就是对应的bean id 可以自动注入
System.out.println(jedisCluster.get("foo"));
System.out.println(jedisCluster.set("qq","222"));
System.out.println(jedisCluster.get("qq"));
阅读全文
0 0
- Java集成redis集群
- Springmvc集成redis集群
- java代码中操作Redis:单机redis、集群redis(spring+redis集成)
- java访问redis集群
- redis集群 java dmeo
- redis集群链接-java
- java连接redis集群
- Java操作Redis集群
- Redis-3.0.6 集群部署集成SpringJava工程-----spring集成
- redis基础、java集成Redis入门
- 020Java操作redis集群
- java访问redis集群服务器
- Redis集群解决方案----JAVA应用
- java程序测试redis集群
- java测试redis集群性能
- 7.java操作redis集群
- Redis-3.0.6 集群部署集成SpringJava工程-----环境搭建
- Shiro与Redis集成,集群下的session共享
- google test 环境搭建
- Java代码操作Redis的sentinel和Redis的集群Cluster操作
- Activity的启动模式
- QTextStream读写文件
- tomcat——无限循环的警告
- Java集成redis集群
- 关于iCheck 单选框的事件绑定
- quick cocos2dx 自定义事件管理器
- QLabel中html标签的使用
- SonicOperator之实验2
- SonicOperator之结论
- [SpringMVC] SpringMVC注解
- hdoj 2010
- Hadoop之HDFS(三)