Redis入门很简单之八【Spring Data Redis初探】

<一>. 简单介绍:
        Spring Data貌似提供了对很多数据访问技术的支持,比如JPA、Redis、MongoDB、Hadoop等等。

        闲言少述,现在Redis是被关注的对象,尽管我没有对象;Spring Data Redis(以下简称SDR)在Jedis的基础上,提供了对Redis访问的进一步封装。使用SDR,不在需要手动维护连接的建立、释放,对对象序列化提供了默认实现、不再需要事必亲为。眨眼
        当然,至少在我看来SDR目前貌似还在incubator里面,提供给我们的API并不完善,依赖的冲突让人揪心,不提供Sharding机制等保密,因此仅作了解,就算是打发时间了吧。

 <二>. 关于依赖:
       如果你使用Maven进行搭建的话,这个根本就不是个问题,本该由你关注的问题,工具已经给自动搞定了,你所要做的就是学习工具罢了。然而,像我这样老顽固,作为一个身无长物的屌丝,还是愿意尝试一下不使用Maven的原生态做法。对我来说,这并不损失什么。
  1. 很遗憾,SDR依赖的的是Spring的高版本3.x,我真的不知道如果它依赖的是Spring 2.x版本有什么坏处,当然这不是我能掌控的。
添加如下所示的Spring各个模块即可,No more no less,ok!
      spring-core-3.2.3.RELEASE.jar
      spring-beans-3.2.3.RELEASE.jar
      spring-context-3.2.3.RELEASE.jar
      spring-context-support-3.2.3.RELEASE.jar
      spring-expression-3.2.3.RELEASE.jar
      spring-tx-3.2.3.RELEASE.jar
      spring-aop-3.2.3.RELEASE.jar


       aopalliance-1.0.jar
 2. 日志依赖:
      commons-logging.jar
      log4j-1.2.15.jar
 3. jedis和连接池:
      jedis-2.1.0.jar
      commons-pool.jar
 4. SDR依赖:
      spring-data-redis-1.0.0.RELEASE.jar
 5. 说明:关于Spring、commons-pool、jedis、spring-data-redis的版本,很容易导致冲突,挺烦人的,呜呜...   各位不妨一试,如果有更好方案,烦请告诉我!

 

 <三>. 关于配置:applicationContext.xml

 1. 定义连接工厂:关于jedisPoolConfig的配置,参见之前的博客。

Java代码   收藏代码
  1. <bean id = "jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">  
  2.   <constructor-arg index="0" ref="jedisPoolConfig"/>  
  3.   <property name="hostName" value="${redis.host}"/>  
  4.   <property name="port" value="${redis.port}"/>  
  5.   <property name="timeout" value="${redis.timeout}"/>  
  6.   <property name="password" value="${redis.password}"/>  
  7. </bean>  

 2. 定义redisTemplate:提供了对Jedis进行的通用API操作。

Java代码   收藏代码
  1. <bean id = "redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  
  2.    <property name="connectionFactory" ref="jedisConnectionFactory"/>  
  3.    <property name="keySerializer">  
  4.       <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>  
  5.    </property>  
  6. </bean>  

  说明:
    @ SDR默认采用JDK的序列化机制:
     使用JdkSerializationRedisSerializer类,进行对象和byte[]之间的相互转换,就像之前已经做得那样。
    @ 通常情况下,我们使用字符串形式的key即可,因此:指定keySerializer为StringRedisSerializer类,如上配置。
 3. 使用redisTemplate:作为字段,注入到Service层即可。

Java代码   收藏代码
  1. <bean id = "userStorage" class="com.sdr.cache.UserStorage">  
  2.    <property name="redisTemplate" ref="redisTemplate"/>  
  3. </bean>  

 <四>. 我最喜欢的CRUD:不解释

Java代码   收藏代码
  1. /* 
  2.  * Copyright (c) 2014, Nick Xu, All rights reserved. 
  3.  */  
  4. package com.sdr.cache;  
  5.   
  6. import org.springframework.data.redis.core.RedisTemplate;  
  7.   
  8. import com.sdr.model.Userinfo;  
  9.   
  10. /** 
  11.  * 功能简述: SDR入门操作. 
  12.  * @author Nick Xu 
  13.  * @version 1.0 
  14.  */  
  15. public class UserStorage {  
  16.       
  17.     private RedisTemplate<String, Userinfo> redisTemplate;  
  18.       
  19.     public void addOrUpdate(Userinfo user) {  
  20.         redisTemplate.opsForValue().set("user.userid." + user.getUserId(), user);  
  21.     }  
  22.       
  23.     public Userinfo load(int userId) {  
  24.         return redisTemplate.opsForValue().get("user.userid." + userId);  
  25.     }  
  26.   
  27.     public void delete(int userId) {  
  28.         redisTemplate.delete("user.userid." + userId);  
  29.     }  
  30.       
  31.     public RedisTemplate<String, Userinfo> getRedisTemplate() {  
  32.         return redisTemplate;  
  33.     }  
  34.       
  35.     public void setRedisTemplate(RedisTemplate<String, Userinfo> redisTemplate) {  
  36.         this.redisTemplate = redisTemplate;  
  37.     }  
  38. }  

 

    心如止水,把自己学习Redis的一点一滴全都放到了ITeye上面,
    我知道我是写给自己看的,
    我欣赏安安静静、心无旁骛的自己,
    尽管有些人戏谑般的说是自恋,
    我相信, I don't care ...尴尬

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值