redis 集成到 spring 中
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p" xmlns:util="http://www.springframework.org/schema/util" xmlns:tool="http://www.springframework.org/schema/tool" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd"> <!-- other redis connection configuration begin--> <bean id="otherRedis" class="com.trace.db.otherredis.RedisEntry" scope="singleton" > <property name="hostName" value="127.0.0.1" /> <property name="portNumber" value="6379" /> <property name="password"><null/></property> </bean> <bean id="redisconnectionconfig" class="com.trace.db.otherredis.RedisConnectionConfigBean" scope="singleton" > <property name="hostConfig"> <list> <ref bean="otherRedis" /> </list> </property> </bean> <bean id="redisConnectionContext" class="com.trace.db.otherredis.RedisConnectionContext" scope="singleton" > <property name="redisConfig" ref="redisconnectionconfig"/> </bean> <!-- other redis connection configuration fin--> </beans>
package com.trace.db.otherredis; public class RedisEntry { private String hostName; private int portNumber; private String password; public RedisEntry() { setHostName("localhost"); setPortNumber(6379); setPassword(null); } public String getHostName() { return hostName; } public void setHostName(String hostName) { this.hostName = hostName; } public int getPortNumber() { return portNumber; } public void setPortNumber(int portNumber) { this.portNumber = portNumber; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package com.trace.db.otherredis; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; public class RedisConnectionConfigBean extends JedisPoolConfig { private Logger log = Logger.getLogger(RedisConnectionConfigBean.class); private static final int REDIS_MAX_ACTIVE = 1000; private static final int REDIS_MAX_IDLE = 60; private static final int REDIS_MAX_WAIT = 4000; private static final boolean REDIS_TEST_ON_BORROW = true; private List<RedisEntry> hostConfig = null; public RedisConnectionConfigBean() { super(); log.info("RedisConnectionConfigBean Constructor"); this.setMaxActive(RedisConnectionConfigBean.REDIS_MAX_ACTIVE); this.setMaxIdle(RedisConnectionConfigBean.REDIS_MAX_IDLE); this.setMaxWait(RedisConnectionConfigBean.REDIS_MAX_WAIT); this.setTestOnBorrow(RedisConnectionConfigBean.REDIS_TEST_ON_BORROW); } public List<JedisShardInfo> getShardList() { if(null == hostConfig || hostConfig.isEmpty()) { return null; } List<JedisShardInfo> reltList = new ArrayList<JedisShardInfo>(); for(RedisEntry entry : hostConfig) { JedisShardInfo localInfo = new JedisShardInfo(entry.getHostName(), entry.getPortNumber()); localInfo.setPassword(entry.getPassword()); log.info("JedisConnectionConfigBean getShardList entry for "+ entry.getHostName() + ":" + entry.getPortNumber()); reltList.add(localInfo); }//end for return reltList; } public void setHostConfig(List<RedisEntry> hostConfig) { log.info("JedisConnectionConfigBean setHostConfig"); this.hostConfig = hostConfig; } public List<RedisEntry> getHostConfig() { return hostConfig; } }
package com.trace.db.otherredis; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool; public class RedisConnectionContext { private Logger log = Logger.getLogger(RedisConnectionContext.class); private RedisConnectionConfigBean redisConfig = null; private ShardedJedisPool shardedJedisPool = null; /** * */ public RedisConnectionContext() { log.debug("JedisConnectionFactory constructor"); } private ShardedJedisPool getShardedJedisPool() { if(null == redisConfig) { log.error("getShardedJedisPool with null config"); return null; } if(null == shardedJedisPool) { log.error("getShardedJedisPool while no pool exist, create a new one"); shardedJedisPool = new ShardedJedisPool(redisConfig, redisConfig.getShardList()); } return shardedJedisPool; } private ShardedJedis getRedisConnection() { ShardedJedis localJedis = null; try { localJedis = this.getShardedJedisPool().getResource(); if(null == localJedis) { log.error("getRedisConnection: can NOT get instance"); } return localJedis; } catch (Exception e) { log.error("getRedisConnection Exception"); e.printStackTrace(); return null; } } @SuppressWarnings("unused") private void closeRedisConnection(ShardedJedis paramJedis) { if (null != paramJedis) { try { this.getShardedJedisPool().returnResource(paramJedis); } catch (Exception e) { log.error("closeRedisConnection Exception"); e.printStackTrace(); } } paramJedis = null; } // next operations public void setRedisMap(String taskId, Map<String, String> eventMap){ log.debug("setRedisMap: taskId: " + taskId); this.getRedisConnection().hmset(taskId,eventMap); } public List<String> getRedisMap(String taskId,String... field){ log.debug("getRedisMap: taskId: " + taskId + " field:" + field) ; return this.getRedisConnection().hmget(taskId,field); } public void setRedisConfig(RedisConnectionConfigBean paramJedisConfig) { redisConfig = paramJedisConfig; } public RedisConnectionConfigBean getRedisConfig() { return redisConfig; } }
log.info("init context: " + ProbServiceConfigs.SCTX_OTHER_REDIS_SUPPORT); ApplicationContext otherRedisContext = new ClassPathXmlApplicationContext(ProbServiceConfigs.SCTX_OTHER_REDIS_SUPPORT); paramContextEvent.getServletContext().setAttribute(ProbServiceConfigs.SCTX_OTHER_REDIS_SUPPORT, otherRedisContext); RedisConnectionContext redisCtx = (RedisConnectionContext) otherRedisContext.getBean("redisConnectionContext");
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!