【黑马程序员】分布式缓存技术redis学习系列----深入理解Spring Redis的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【黑马程序员】分布式缓存技术redis学习系列----深入理解Spring Redis的使用
关于spring redis框架的使用,网上的例子很多很多。但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个框架。
Spring-data-redis为spring-data模块中对redis的支持部分,简称为“SDR”,提供了基于jedis 客户端API的高度封装以及与spring容器的整合,事实上jedis客户端已经足够简单和轻量级,而spring-data-redis反而具有“过度设计”的嫌疑。
jedis客户端在编程实施方面存在如下不足:
1) connection管理缺乏自动化,connection-pool的设计缺少必要的容器支持。
2) 数据操作需要关注“序列化”/“反序列化”,因为jedis的客户端API接受的数据类型为string 和byte,对结构化数据(json,xml,pojo)操作需要额外的支持。
3) 事务操作纯粹为硬编码
4) pub/sub功能,缺乏必要的设计模式支持,对于开发者而言需要关注的太多。
1. Redis使用场景
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
我们都知道,在日常的应用中,数据库瓶颈是最容易出现的。数据量太大和频繁的查询,由于磁盘IO 性能的局限性,导致项目的性能越来越低。
这时候,基于内存的缓存框架,就能解决我们很多问题。例如Memcache ,Redis 等。将一些频繁使用的数据放入缓存读取,大大降低了数据库的负担。提升了系统的性能。其实,对于hibernate 以及Mybatis 的二级缓存,是同样的道理。利用内存高速的读写速度,来解决硬盘的瓶颈。
2. 配置使用redis
项目的整体结构如下:
在applicationContext-dao.xml 中配置如下:
[AppleScript] 纯文本查看 复制代码
?
01 02 03 04 05 06 07 0 encoding="UTF-8"?> xmlns:mongo="/schema/data/mong o" xmlns:aop="/schema/aop" xsi:schemaLocation="/schema/be ans [url=/schema/b eans/spring-beans-3.0.xsd]/schema/bean s/spring-beans-3.0.xsd[/url] [url=/schema/d 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 ata/mongo]/schema/data/mongo[/url] [url=/schema/d ata/mongo/spring-mongo.xsd]/schema/dat a/mongo/spring-mongo.xsd[/url] [url=/schema/c ontext]/schema/context[/url] [url=/schema/context/s pring-context-3.0.xsd]/s ... ing-context-3.0.xsd[/url] [url=/schema/aop]http: ///schema/aop[/url] [url=/schema/aop/sprin g-aop-3.0.xsd]/schema/aop/spring-aop-3 .0.xsd[/url]"> location="classpath:database.properties" /> class="redis.clients.jedis.JedisPoolConfig"> value="${redis.maxIdle}" /> value="${redis.maxActive}" /> value="${redis.maxWait}" /> value="${redis.testOnBorrow}" /> class="org.springframework.data.redis.connection.jedis.JedisConnecti onFactory"> value="${redis.host}"/> value="${redis.pass}"/> class="org.springframework.data.redis.serializer.StringRedisSerializ