Spring集成redis(pipeline方式)
2016-12-26 23:23
323 查看
1.maven添加spring、redis、log4j依赖
properties设置
相关dependency
2.新建dao接口
3.具体实现
redisbase类
RedisExecute接口,其实现类实现具体功能
redisDao对应实现类
4.bean配置
redis.properties文件
redis.spring.xml
properties设置
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.3.0.RELEASE</spring.version> <jedis.version>2.1.0</jedis.version> <springdateredis.version>1.0.2.RELEASE</springdateredis.version> </properties>
相关dependency
<!-- spring 依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- springredis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${springdateredis.version}</version> </dependency> <!-- redis 依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency> <!-- log4j日志 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency>
2.新建dao接口
package com.lgd.ssh.spider.Dao; import java.util.List; import java.util.Map; public interface RedisDao { /** * 向redis添加数据 * * @param addMap<key, * value> */ public void add(Map<String, String> addMap); /** * 删除redis数据 * * @param deleteList<key> */ public void delete(List<String> deleteList); /** * 更新redis数据 * * @param updateMap<key, * value> */ public void update(Map<String, String> updateMap); /** * 查询 * * @param queryList */ public Map<String, String> query(List<String> queryList); }
3.具体实现
redisbase类
package com.lgd.ssh.spider.Dao.Spi; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.Pipeline; /** * redis基类 * @author lgd * */ public class RedisBaseDao { private static JedisPool jedisPool; public static JedisPool getJedisPool() { return jedisPool; } public static void setJedisPool(JedisPool jedisPool) { RedisBaseDao.jedisPool = jedisPool; } private Jedis getJedis() { return jedisPool.getResource(); } private Jedis getJedisClient() { return getJedis(); } private Pipeline getPipeline() { Jedis jedis = getJedisClient(); return jedis.pipelined(); } public <T> T RedisExecute(RedisExecute<T> redisExcute){ Pipeline pipeline = getPipeline(); return redisExcute.Execute(pipeline); } }
RedisExecute接口,其实现类实现具体功能
package com.lgd.ssh.spider.Dao.Spi; import redis.clients.jedis.Pipeline; public interface RedisExecute<T> { public T Execute(Pipeline pipeline); }
redisDao对应实现类
package com.lgd.ssh.spider.Dao.Spi; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import com.lgd.ssh.spider.Dao.RedisDao; import redis.clients.jedis.Pipeline; import redis.clients.jedis.Response; public class RedisDaoSpi extends RedisBaseDao implements RedisDao { private Logger logger = Logger.getLogger(RedisDaoSpi.class); public void add(final Map<String, String> addMap) { if (logger.isDebugEnabled()) { logger.debug("start RedisDaoSpi.add"); } RedisExecute(new RedisExecute<Void>() { public Void Execute(Pipeline pipeline) { pipeline.multi(); for (Map.Entry<String, String> entry : addMap.entrySet()) { pipeline.setnx(entry.getKey(), entry.getValue()); } pipeline.exec(); pipeline.syncAndReturnAll(); return null; } }); if (logger.isDebugEnabled()) { logger.debug("end RedisDaoSpi.add"); } } public void delete(final List<String> deleteList) { if (logger.isDebugEnabled()) { logger.debug("start RedisDaoSpi.delete"); } RedisExecute(new RedisExecute<Void>() { public Void Execute(Pipeline pipeline) { pipeline.multi(); for (String key : deleteList) { pipeline.del(key); } pipeline.exec(); pipeline.syncAndReturnAll(); return null; } }); if (logger.isDebugEnabled()) { logger.debug("end RedisDaoSpi.delete"); } } public void update(final Map<String, String> updateMap) { if (logger.isDebugEnabled()) { logger.debug("start RedisDaoSpi.update"); } RedisExecute(new RedisExecute<Void>() { public Void Execute(Pipeline pipeline) { pipeline.multi(); for (Map.Entry<String, String> entry : updateMap.entrySet()) { pipeline.set(entry.getKey(), entry.getValue()); } pipeline.exec(); pipeline.syncAndReturnAll(); return null; } }); if (logger.isDebugEnabled()) { logger.debug("end RedisDaoSpi.update"); } } public Map<String, String> query(final List<String> queryList) { if (logger.isDebugEnabled()) { logger.debug("start RedisDaoSpi.query"); } Map<String, String> getMap = RedisExecute(new RedisExecute<Map<String, String>>() { public Map<String, String> Execute(Pipeline pipeline) { Map<String, Response<String>> getMap = new HashMap<String, Response<String>>(); pipeline.multi(); for (String key : queryList) { getMap.put(key, pipeline.get(key)); } pipeline.exec(); pipeline.syncAndReturnAll(); Map<String, String> resultMap = new HashMap<String, String>(); for (Map.Entry<String, Response<String>> entry : getMap.entrySet()) { resultMap.put(entry.getKey(), entry.getValue().get()); } return resultMap; } }); if (logger.isDebugEnabled()) { logger.debug("end RedisDaoSpi.query"); } return getMap; } }
4.bean配置
redis.properties文件
# Redis settings redis.host=localhost redis.port=6379 redis.pass=P@ssw0rd redis.maxIdle=300 redis.maxActive=600 redis.maxWait=1000 redis.testOnBorrow=true
redis.spring.xml
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:property-placeholder location="classpath:properties/redis.properties" /> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxActive" value="${redis.maxActive}" /> <property name="maxWait" value="${redis.maxWait}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg index="0" ref="jedisPoolConfig" /> <constructor-arg index="1" value="${redis.host}" /> <constructor-arg index="2" value="${redis.port}" type="int" /> </bean> <bean id="redisBaseDao" class="com.lgd.ssh.spider.Dao.Spi.RedisBaseDao"> <property name="jedisPool" ref="jedisPool"></property> </bean> <bean id="redisDao" class="com.lgd.ssh.spider.Dao.Spi.RedisDaoSpi" parent="redisBaseDao"> </bean> </beans>
相关文章推荐
- spring4 注解方式集成redis
- spring-data-redis集成的两种方式
- spring配置集成redis的不同方式
- redis集群的Cluster方式配置以及spring的集成
- spring 和 redis的集成(使用注解方式)
- redis注解方式集成到Spring项目详尽说明!
- Mybatis3.2.1使用例二:Mapper方式集成Spring、注解提供SQL
- JPA2.0和Spring的集成配置方式
- Struts1.2&Spring2.5&Hibernate3.2集成---非注解方式
- Spring 和JSF的集成的一种方式
- 实现一致性Spring集成Redis实例入门
- Struts与Spring集成方式(一)
- axis2与Spring集成配置的几种方式
- struts1集成spring的方式
- spring集成mybatis的三种方式
- CXF 和Spring 集成开发两种发布方式
- redis与spring的完全集成
- XFire与Spring集成时WebService客户端的两种开发方式
- Struts与Spring集成方式
- Struts1.x/2.x 与 Spring集成方式