redis 集成到 spring 中

简介:   redis  集成到 spring 中         package com.

 

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捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

目录
相关文章
|
数据可视化 Java BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
577 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
XML 人工智能 Java
Spring Boot集成Aviator实现参数校验
Aviator是一个高性能、轻量级的Java表达式求值引擎,适用于动态表达式计算。其特点包括支持多种运算符、函数调用、正则匹配、自动类型转换及嵌套变量访问,性能优异且依赖小。适用于规则引擎、公式计算和动态脚本控制等场景。本文介绍了如何结合Aviator与AOP实现参数校验,并附有代码示例和仓库链接。
846 0
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
1264 0
|
消息中间件 存储 Java
第15课: Spring Boot中集成ActiveMQ
第15课: Spring Boot中集成ActiveMQ
815 0
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
1034 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
1007 0
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
1202 2
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
960 2
|
缓存 JSON 前端开发
第07课:Spring Boot集成Thymeleaf模板引擎
第07课:Spring Boot集成Thymeleaf模板引擎
1109 0
第07课:Spring Boot集成Thymeleaf模板引擎