Spring Data Redis实战之提供RedisTemplate
为什么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相关推荐
- Java Spring Data Redis实战与配置参数详解 application.properties...
Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...
- Java Spring Data Redis实战与配置参数详解 application.properties
Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...
- Spring Data Redis入门示例:基于RedisTemplate (三)
使用底层API:RedisConnection操作Redis,需要对数据进行手动转换(String <---->byte),需要进行多数重复性工作,效率低下:org.springframe ...
- 一文搞定 Spring Data Redis 详解及实战
转载自 一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...
- spring mvc Spring Data Redis RedisTemplate [转]
http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...
- Spring Data Redis—Pub/Sub(附Web项目源码)
一.发布和订阅机制 当一个客户端通过 PUBLISH 命令向订阅者发送信息的时候,我们称这个客户端为发布者(publisher). 而当一个客户端使用 SUBSCRIBE 或者 PSUBSCRIBE ...
- 使用Spring Data Redis进行缓存
在下面的示例中,我将向您展示如何使用Spring Data – Redis项目作为Spring 3.1中引入的Spring Cache Abstraction的缓存提供程序. 我对如何使用Spring ...
- Spring Data Redis 实践
前言 Spring Data Redis是Spring Data大家族的一部分,提供了基于spring应用的简易配置与redis服务访问,它为存储与交互提供了低级(low-level)和高级的(hig ...
- Spring Data Redis 让 NoSQL 快如闪电(2)
2019独角兽企业重金招聘Python工程师标准>>> 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论 ...
最新文章
- 深入理解分布式技术 - 实践分库分表
- 成功解决TypeError: fit_transform() takes 2 positional arguments but 3 were given
- bat脚本交互输入_测评 | 不使用powershell运行 PowerShell 脚本的工具汇总
- python会内存泄漏吗_Python内存泄漏和内存溢出的解决方法
- 山寨一个PetShop(Task002)——数据类库Model
- activitimq集群搭建_Spring-activiti
- crammd5 php,使用CRAMMD5的SMTP身份验证
- 干货!一份超详细的Spring Boot知识清单
- ubuntu14.04 sougou输入法, qtcreator适配sougou输入法
- Ionic3城市检索和滑动定位
- win7重装的坑:启动分区不存在 使用分区工具修正
- Python基础-编码
- springboot+社区快递代取服务系统毕业设计-附源码051434
- d3.js画柱状图超详细教程
- 2019美和易思第十一期班主任选拔培训(贵州+重庆区域)拉开帷幕
- AA和AAA台灯区别大吗?护眼台灯选哪个品牌比较好
- CAM350导入rou文件
- Angular防抖设计——点击事件
- 西门子伺服驱动的STO功能
- ubuntu安装keepass2 中文乱码
热门文章
- 微信收款音响s3服务器断开,微信收款音响s2和s3有什么区别
- 计算机专业和机电专业的区别,12届计算机专业和机电专业.doc
- 在微型计算机系统中,打印机一般是通过( ,2013湖南省计算机等级考试试题 二级C试题最新考试试题库...
- js java 反射机制_java 类加载机制和反射机制
- python 字符串处理 字典_python 字符串和字典
- Oracle19C的dbhome,Windows server 安装Oracle19c (WINDOWS.X64_193000_db_home.zip) 过程碰到的问题总结...
- vfp程序转换为c语言程序软件,c语言程序设计及vfp程序设计试题.doc
- event类型 php,深入解析PHP的Laravel框架中的event事件操作
- java中 queryparam_java – 何时使用@QueryParam和@PathParam
- ev10aq190a采集电路图_EV10AQ190A数模转换器