您的位置:首页 > 数据库 > Redis

Redis-3.0.6 集群部署集成SpringJava工程-----spring集成

2016-01-19 17:08 681 查看
1. 引入依赖jar包 或者 加入maven依赖



















<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>


2.新建redis工厂类 --- 注意更改类中的package包路径





package com.wen.frame;

import java.text.ParseException;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class JedisClusterFactory implements FactoryBean<JedisCluster>, InitializingBean {

private GenericObjectPoolConfig genericObjectPoolConfig;
private JedisCluster jedisCluster;
private int connectionTimeout = 2000;
private int soTimeout = 3000;
private int maxRedirections = 5;
private Set<String> jedisClusterNodes;

@Override
public void afterPropertiesSet() throws Exception {
if (jedisClusterNodes == null || jedisClusterNodes.size() == 0) {
throw new NullPointerException("jedisClusterNodes is null.");
}
Set<HostAndPort> haps = new HashSet<HostAndPort>();
for (String node : jedisClusterNodes) {
String[] arr = node.split(":");
if (arr.length != 2) {
throw new ParseException("node address error !",node.length()-1);
}
haps.add(new HostAndPort(arr[0], Integer.valueOf(arr[1])));
}
jedisCluster = new JedisCluster(haps, connectionTimeout, soTimeout, maxRedirections, genericObjectPoolConfig);
}

@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;
}

public GenericObjectPoolConfig getGenericObjectPoolConfig() {
return genericObjectPoolConfig;
}

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

public JedisCluster getJedisCluster() {
return jedisCluster;
}

public void setJedisCluster(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}

public int getConnectionTimeout() {
return connectionTimeout;
}

public void setConnectionTimeout(int connectionTimeout) {
this.connectionTimeout = connectionTimeout;
}

public int getSoTimeout() {
return soTimeout;
}

public void setSoTimeout(int soTimeout) {
this.soTimeout = soTimeout;
}

public int getMaxRedirections() {
return maxRedirections;
}

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

public Set<String> getJedisClusterNodes() {
return jedisClusterNodes;
}

public void setJedisClusterNodes(Set<String> jedisClusterNodes) {
this.jedisClusterNodes = jedisClusterNodes;
}
}


3.在spring配置文件applicationContextService-dao.xml中引入bean
<!-- 增加对redis的支持 -->
<bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
<property name="maxWaitMillis" value="-1" />
<property name="maxTotal" value="8" />
<property name="minIdle" value="0" />
<property name="maxIdle" value="8" />
</bean>
<!-- 配置工厂和节点 -->
<bean id="jedisCluster" class="com.wen.frame.JedisClusterFactory">
<property name="connectionTimeout" value="3000" />
<property name="soTimeout" value="3000" />
<property name="maxRedirections" value="5" />
<property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" />
<property name="jedisClusterNodes">
<set>
<value>192.168.33.132:7000</value>
<value>192.168.33.132:7001</value>
<value>192.168.33.132:7002</value>
<value>192.168.33.132:7003</value>
<value>192.168.33.132:7004</value>
<value>192.168.33.132:7005</value>
</set>
</property>
</bean>


4.测试java类 --- run main方法
package com.wen.frame;

import redis.clients.jedis.*;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* jedis 测试 cluster
*
* @author steven
*/
public class App
{
public static void main( String[] args )
{
Set<HostAndPort> clusterNodes = new HashSet<HostAndPort>();
// 这里只需要列出集群中的一个节点
// JedisCluster 会自己去 discovery 其他的集群节点
clusterNodes.add(new HostAndPort("192.168.33.132", 7000));
clusterNodes.add(new HostAndPort("192.168.33.132", 7001));
clusterNodes.add(new HostAndPort("192.168.33.132", 7002));
clusterNodes.add(new HostAndPort("192.168.33.132", 7003));
clusterNodes.add(new HostAndPort("192.168.33.132", 7004));
clusterNodes.add(new HostAndPort("192.168.33.132", 7005));
JedisCluster cluster = new JedisCluster(clusterNodes);/**工程启动之后直接使用注入调用节点即可@Autowired
<span style="white-space:pre">	</span>JedisCluster jedisCluster;**/
//测试集群读写
cluster.set("foo", "jedis test");
String value = cluster.get("foo");
System.out.println("foo = " + value);

}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: