Redis-3.0.6 集群部署集成SpringJava工程-----spring集成
2016-01-19 17:08
681 查看
1. 引入依赖jar包 或者 加入maven依赖
2.新建redis工厂类 --- 注意更改类中的package包路径
3.在spring配置文件applicationContextService-dao.xml中引入bean
4.测试java类 --- run main方法
<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); } }
相关文章推荐
- Redis 键(key)
- redis 界面软件使用
- Redis-3.0.6 集群部署集成SpringJava工程-----环境搭建
- redis在window下的安装启动
- Redis EXISTS命令耗时过长case排查
- [转]阿里云 Linux 安装phpredis扩展 How to install Redis and Redis php client
- Redis简介
- Redis 管道技术
- Redis学习记录之persistence简析(二十五)
- redis使用小结
- redis常见操作命令-sortedset
- 《Redis系列专题》 之 大规模互联网应用Redis架构要点(精华)
- Redis常用命令记录
- redis数据迁移
- Redis学习记录之protocol简析(二十四)
- Redis的连接
- 基于redis缓存的session共享
- redis之如何配置jedisPool参数
- Redis 列表(List)
- redis集群操作