【黑马程序员】分布式缓存技术redis学习系列----深入理解Spring Redis的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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