设为首页 收藏本站
查看: 665|回复: 0

[经验分享] redis 集成到 spring 中

[复制链接]

尚未签到

发表于 2016-12-19 07:04:28 | 显示全部楼层 |阅读模式
  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");

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316057-1-1.html 上篇帖子: Redis 实践之集群方案 下篇帖子: Spring与Redis整合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表