为什么80%的码农都做不了架构师?>>>   

参考:

http://www.cnblogs.com/edwinchen/p/3816938.html

本项目创建的是Maven项目

一、pom.xml引入dependencies

        <dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-redis</artifactId><version>1.7.3.RELEASE</version></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version><exclusions><exclusion><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.3.8.RELEASE</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.4.2</version></dependency>

二、配置applicationContext-redis.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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"><property name="maxTotal" value="${redis.pool.maxTotal}" /><property name="maxIdle" value="${redis.pool.maxIdle}" /><property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" /><property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /><property name="testOnReturn" value="${redis.pool.testOnReturn}" /><property name="testWhileIdle" value="${redis.pool.testWhileIdle}"/></bean><bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"p:hostName="${redis.host}" p:port="${redis.port}" p:password="${redis.password}"p:poolConfig-ref="poolConfig"/><bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"><property name="connectionFactory" ref="connectionFactory" /><property name="keySerializer"><bean class="org.springframework.data.redis.serializer.StringRedisSerializer" /></property><property name="valueSerializer"><bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" /></property></bean></beans>

注意:配置poolConfig中property 的name 需要对应JedisPoolConfig这个类中实际的属性;

配置connectionFactory同样要注意这个,因为其他博文配置属性时有所不同,主要是因为redis版本不同引起的有所不同。

三、properties文件配置值

# poolConfig 配置信息
redis.pool.maxTotal=1024
redis.pool.maxIdle=200
redis.pool.maxWaitMillis=1000
redis.pool.testOnBorrow=true
redis.pool.testOnReturn=true
redis.pool.testWhileIdle=true# connectionFactory 配置信息
redis.host=localhost
redis.port=6379
redis.timeout=15000
redis.password=123456

另外,需要注意的是,要引入该文件可以在applicationContext-redis.xml加入

<!-- scanner redis properties 假如有封装用于加载properties,就不需要加这句了 -->
<context:property-placeholder location="classpath:property/redis.properties" />

四、使用RedisTemplate

其他项目需要RedisTemplate的时候,需要引入以上maven模块的dependency

测试类使用:

/*** 测试 spring-data-redis 集成* Created by zhile on 2017/5/12 0012.*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestRedis {@Autowiredprivate RedisTemplate redisTemplate;@Testpublic void testTemple() {ValueOperations valueOperations = redisTemplate.opsForValue();valueOperations.set("spring-data-redis::test", "tom", 1000, TimeUnit.SECONDS);System.out.println("set successed");
/*ValueOperations valueOpers = redisTemplate.opsForValue();System.out.println("get:" + valueOpers.get("spring-data-redis::test"));*/}@Testpublic void testRedisTemple() {ValueOperations valueOpers = redisTemplate.opsForValue();System.out.println("get:" + valueOpers.get("spring-data-redis::test"));}
}

这样,只要引入集成了RedisTemplate的maven模块,就可以直接使用。

五、问题小结:

1.引入的dependency需要注意兼容性,因为redis2.7.3 中的commons-pool2版本不完整,需要引入较新的commons-pool2。

Caused by: java.lang.NoSuchMethodError:
redis.clients.jedis.JedisPool.apache/commons/pool2/impl/GenericObjectPoolConfig等等

2.假如spring-data-redis的版本1.8.3,而redis的版本还是为2.7.3的话,会报这样的错:

所以,需要注意版本兼容的问题,这是因为spring-data-redis的版本太新点。

java.lang.IllegalStateException: Failed to load ApplicationContext Caused by: org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'redisTemplate' defined in class path resource [applicationContext-redis.xml]:...Caused by: org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'connectionFactory' defined in class path resource[applicationContext-redis.xml]:...Caused by: java.lang.NoClassDefFoundError:
Could not initialize class org.springframework.data.redis.connection.jedis.JedisConnectionFactory...

补充参考:

http://zhaozhiming.github.io/blog/2015/04/12/spring-data-redis/

http://www.baeldung.com/spring-data-redis-tutorial

转载于:https://my.oschina.net/itommy/blog/898416

Spring Data Redis实战之提供RedisTemplate相关推荐

  1. Java Spring Data Redis实战与配置参数详解 application.properties...

    Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...

  2. Java Spring Data Redis实战与配置参数详解 application.properties

    Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...

  3. Spring Data Redis入门示例:基于RedisTemplate (三)

    使用底层API:RedisConnection操作Redis,需要对数据进行手动转换(String <---->byte),需要进行多数重复性工作,效率低下:org.springframe ...

  4. 一文搞定 Spring Data Redis 详解及实战

    转载自  一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...

  5. spring mvc Spring Data Redis RedisTemplate [转]

    http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...

  6. Spring Data Redis—Pub/Sub(附Web项目源码)

    一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...

  7. 使用Spring Data Redis进行缓存

    在下面的示例中,我将向您展示如何使用Spring Data – Redis项目作为Spring 3.1中引入的Spring Cache Abstraction的缓存提供程序. 我对如何使用Spring ...

  8. Spring Data Redis 实践

    前言 Spring Data Redis是Spring Data大家族的一部分,提供了基于spring应用的简易配置与redis服务访问,它为存储与交互提供了低级(low-level)和高级的(hig ...

  9. Spring Data Redis 让 NoSQL 快如闪电(2)

    2019独角兽企业重金招聘Python工程师标准>>> 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论 ...

最新文章

  1. 深入理解分布式技术 - 实践分库分表
  2. 成功解决TypeError: fit_transform() takes 2 positional arguments but 3 were given
  3. bat脚本交互输入_测评 | 不使用powershell运行 PowerShell 脚本的工具汇总
  4. python会内存泄漏吗_Python内存泄漏和内存溢出的解决方法
  5. 山寨一个PetShop(Task002)——数据类库Model
  6. activitimq集群搭建_Spring-activiti
  7. crammd5 php,使用CRAMMD5的SMTP身份验证
  8. 干货!一份超详细的Spring Boot知识清单
  9. ubuntu14.04 sougou输入法, qtcreator适配sougou输入法
  10. Ionic3城市检索和滑动定位
  11. win7重装的坑:启动分区不存在 使用分区工具修正
  12. Python基础-编码
  13. springboot+社区快递代取服务系统毕业设计-附源码051434
  14. d3.js画柱状图超详细教程
  15. 2019美和易思第十一期班主任选拔培训(贵州+重庆区域)拉开帷幕
  16. AA和AAA台灯区别大吗?护眼台灯选哪个品牌比较好
  17. CAM350导入rou文件
  18. Angular防抖设计——点击事件
  19. 西门子伺服驱动的STO功能
  20. ubuntu安装keepass2 中文乱码

热门文章

  1. 微信收款音响s3服务器断开,微信收款音响s2和s3有什么区别
  2. 计算机专业和机电专业的区别,12届计算机专业和机电专业.doc
  3. 在微型计算机系统中,打印机一般是通过( ,2013湖南省计算机等级考试试题 二级C试题最新考试试题库...
  4. js java 反射机制_java 类加载机制和反射机制
  5. python 字符串处理 字典_python 字符串和字典
  6. Oracle19C的dbhome,Windows server 安装Oracle19c (WINDOWS.X64_193000_db_home.zip) 过程碰到的问题总结...
  7. vfp程序转换为c语言程序软件,c语言程序设计及vfp程序设计试题.doc
  8. event类型 php,深入解析PHP的Laravel框架中的event事件操作
  9. java中 queryparam_java – 何时使用@QueryParam和@PathParam
  10. ev10aq190a采集电路图_EV10AQ190A数模转换器