Spring整合Redis,并配置Jedis连接池

目录


只言片语

创建redis连接池的配置文件

单机版

spring整合redis(使用JedisPool)

项目中使用示例

集群版

spring整合redis(使用JedisCluster)

项目中使用示例

 

 

 


 

 

 

只言片语

  如果想了解如何使用原生Java代码操作Redis,配置Redis连接池,可以参考:redis连接池——JedisPool和JedisCluster的介绍与使用

  Spring整合Redis,无非就是将手动创建Jedis对象的过程交给Spring来创建,并且使用Spring的IoC和DI在需要JedisPool的地方进行注入,然后获得Jedis对象,再进行操作。

  下面会对单机版的Redis,以及Redis集群分别进行配置。

 

 

创建redis连接池的配置文件

  连接池配置文件名为redis_pool.properties,位于classpath目录下,内容如下:

redis_maxTotal=30
redis_maxIdle=15
redis_minIdle=5
redis_ip=127.0.0.1
redis_port=6379
redis_timeout=2000
redis_database=0

  

 

单机版

  单机版,是指应用中只有一台Redis服务器,所有的操作都是在这台Redis服务器上面进行,此时配置和使用Redis只需要一个host+port(就是Redis服务器的host和port)。

 

Spring整合Redis

<?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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

	<context:component-scan base-package="cn.ganlixin.test"></context:component-scan>

	<!-- 读取redis pool的配置文件 -->
	<context:property-placeholder location="classpath:redis_pool.properties" />

	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxTotal" value="${redis_maxTotal}"></property>
		<property name="minIdle" value="${redis_minIdle}"></property>
		<property name="maxIdle" value="${redis_maxIdle}"></property>
	</bean>

	<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
		<constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
		<constructor-arg name="host" value="${redis_host}"></constructor-arg>
		<constructor-arg name="port" value="${redis_port}"></constructor-arg>
		<constructor-arg name="timeout" value="${redis_timeout}"></constructor-arg>
		<constructor-arg name="database" value="${redis_database}"></constructor-arg>
	</bean>
</beans>

  

项目使用样例

@Autowired
private JedisPool jedisPool;

public void doSomeAction() {
	// 获取jedis连接
	Jedis jedis = jedisPool.getResource();
	String name = jedis.get("name");
	// 归还连接
	jedis.close();
}

  

 

分布式版

  集群版与单机版的区别很明显,就是整个项目中,有多台Redis服务器,多台服务器以主从方式运行,并且Redis集群中Redis服务器的数量最少为6个,至于怎么搭建Redis集群,这里就不阐述了。

 

Spring整合Redis

<?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:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

	<context:component-scan base-package="cn.ganlixin.test"></context:component-scan>

	<!-- 读取redis pool的配置文件 -->
	<context:property-placeholder location="classpath:redis_pool.properties" />

	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxTotal" value="${redis_maxTotal}"></property>
		<property name="minIdle" value="${redis_minIdle}"></property>
		<property name="maxIdle" value="${redis_maxIdle}"></property>
	</bean>

	<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
		<!-- nodes的注入可以先创建多个HostAndPort的bean,下面使用<ref bean="node1"/>进行注入 -->
		<constructor-arg name="nodes">
			<set>
				<!-- 配置Redis集群中的Redis节点信息,端口分别是6379~6386共8个节点 -->
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
					<constructor-arg name="port" value="6379"></constructor-arg>
				</bean>
				<!-- 鉴于篇幅原因,中间省略了6个HostAndPort的配置 -->
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
					<constructor-arg name="port" value="6386"></constructor-arg>
				</bean>
			</set>
		</constructor-arg>
		<constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg>
	</bean>
</beans>

  

项目中使用示例

@Autowired
private JedisCluster jedisCluster;

public void test() {
	jedisCluster.set("name", "beyond");
	
	// 归还连接(并不是关闭连接)
	try {
		jedisCluster.close();
	} catch (IOException e) {
		e.printStackTrace();
	}
}

  

 

posted @ 2019-06-08 19:22 寻觅beyond 阅读(...) 评论(...) 编辑 收藏
Flag Counter