`

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的配置,参见之前的博客。

  <bean id = "jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <constructor-arg index="0" ref="jedisPoolConfig"/>
    <property name="hostName" value="${redis.host}"/>
    <property name="port" value="${redis.port}"/>
    <property name="timeout" value="${redis.timeout}"/>
    <property name="password" value="${redis.password}"/>
  </bean>

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

   <bean id = "redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
      <property name="connectionFactory" ref="jedisConnectionFactory"/>
      <property name="keySerializer">
         <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
      </property>
   </bean>

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

    <bean id = "userStorage" class="com.sdr.cache.UserStorage">
       <property name="redisTemplate" ref="redisTemplate"/>
    </bean>

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

/*
 * Copyright (c) 2014, Nick Xu, All rights reserved.
 */
package com.sdr.cache;

import org.springframework.data.redis.core.RedisTemplate;

import com.sdr.model.Userinfo;

/**
 * 功能简述: SDR入门操作.
 * @author Nick Xu
 * @version 1.0
 */
public class UserStorage {
    
    private RedisTemplate<String, Userinfo> redisTemplate;
    
    public void addOrUpdate(Userinfo user) {
        redisTemplate.opsForValue().set("user.userid." + user.getUserId(), user);
    }
    
    public Userinfo load(int userId) {
        return redisTemplate.opsForValue().get("user.userid." + userId);
    }

    public void delete(int userId) {
        redisTemplate.delete("user.userid." + userId);
    }
    
    public RedisTemplate<String, Userinfo> getRedisTemplate() {
        return redisTemplate;
    }
    
    public void setRedisTemplate(RedisTemplate<String, Userinfo> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
}

 

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

 

1
0
分享到:
评论
13 楼 114846108 2017-03-27  
写的非常好,入门啦,感谢楼主。
12 楼 di1984HIT 2017-02-02  
学习了  
11 楼 hcysoul 2016-08-17  
到现在为止,我看到的最好的一篇redis的文章。给楼主100个赞,现在的spring data redis貌似已经支持主从了
10 楼 hzsdhf404 2015-12-15  
VERY NICE,THS
9 楼 长滩岛上的辣炒年糕 2015-12-11  
非常感谢,对编程越来越有兴趣了
8 楼 huoku 2015-11-04  

现在才开始学习redis    楼主写的文章很好   一步一步由浅入深   谢谢
从中学到很多东西。。
希望最后可以附上一个具体的使用   然后加以说明  这样就更好了。。
楼主辛苦。。。。
7 楼 josico 2015-06-06  
聊天至于呵呵
Hello_Nick_Xu 写道
liyangzengzeng 写道
看之并学习之,吐槽一下:楼主没有对象但是很自信啊,“我欣赏安安静静、心无旁骛的自己”,是不是没有安安静静、心无旁骛的女生配得上你~哈哈开个玩笑,很感谢这个分享,很详细,学到了不少东西。redis这样算是入门了吗?有机会要用实践检验一下,demo是不一定考虑得全面,不一定完全实用,不一定能用于生产环境的。    


呵呵,我觉得学习一项技术能够迅速上手,并且深入理解是比较重要的;
至于在具体项目中的实践应用 ,应该结合项目架构通盘考虑。
不是三言两语能够说得清楚的,并且也智者见智。

6 楼 123321321 2015-06-03  
3Q学了少好东西。谢谢 
5 楼 wodechanghao 2015-04-26  
redis-cli --raw 下设置中文的值
sadd "hotword" "人民" "中国"

客户端下可以正常显示
爱戴
人民
中国

但是使用jedis读取时乱码
����

亟待楼主帮忙解决
4 楼 Hello_Nick_Xu 2014-07-10  
liyangzengzeng 写道
看之并学习之,吐槽一下:楼主没有对象但是很自信啊,“我欣赏安安静静、心无旁骛的自己”,是不是没有安安静静、心无旁骛的女生配得上你~哈哈开个玩笑,很感谢这个分享,很详细,学到了不少东西。redis这样算是入门了吗?有机会要用实践检验一下,demo是不一定考虑得全面,不一定完全实用,不一定能用于生产环境的。    


呵呵,我觉得学习一项技术能够迅速上手,并且深入理解是比较重要的;
至于在具体项目中的实践应用 ,应该结合项目架构通盘考虑。
不是三言两语能够说得清楚的,并且也智者见智。










3 楼 liyangzengzeng 2014-07-10  
看之并学习之,吐槽一下:楼主没有对象但是很自信啊,“我欣赏安安静静、心无旁骛的自己”,是不是没有安安静静、心无旁骛的女生配得上你~哈哈开个玩笑,很感谢这个分享,很详细,学到了不少东西。redis这样算是入门了吗?有机会要用实践检验一下,demo是不一定考虑得全面,不一定完全实用,不一定能用于生产环境的。    
2 楼 Hello_Nick_Xu 2014-06-12  
josico 写道
不是写给自己看的啊
LZ 我支持你!

呵呵,谢谢
1 楼 josico 2014-06-12  
不是写给自己看的啊
LZ 我支持你!

相关推荐

    springboot项目整合.zip

    第六篇:整合SpringDataJpa] 第七篇:整合Mybatis] 第八篇:通用Mapper与分页插件的集成] 第九篇:整合Lettuce Redis] 第十篇:使用Spring Cache集成Redis] 第十一篇:集成Swagger在线调试] 第十二篇:...

    Java Springboot学习资料.rar

    整合SpringDataJpa 整合Mybatis 通用Mapper与分页插件的集成 整合Lettuce Redis 使用Spring Cache集成Redis 集成Swagger在线调试 初探RabbitMQ消息队列 RabbitMQ延迟队列 actuator 服务监控与管理 actuator与spring-...

    EmptySpringBootProject.zip

    SpringBoot集成了Spring Data JPA,使得数据库操作变得简单。定义对应的Repository接口,继承自JpaRepository,即可实现基本的CRUD操作。同时,实体类需要使用`@Entity`注解标识,属性上使用`@Id`和`@GeneratedValue...

    Delphi 12.3控件之LMD VCL 2024.4 for D12+crack.7z

    Delphi 12.3控件之LMD VCL 2024.4 for D12+crack.7z

    基于DSP28335的单相锁相环(SPLL)实现及其在电力电子中的频率与相位跟踪应用

    内容概要:本文详细介绍了单相锁相环(SPLL)在TI公司DSP28335芯片上的实现方法及其在电力电子中的应用。主要内容涵盖锁相环的基本概念、DSP28335的硬件配置、SPLL算法的具体实现步骤,包括初始化、相位误差计算、PI控制器的设计、频率和相位的更新机制,以及如何应对电网扰动等问题。此外,文中还提供了详细的代码片段和调试技巧,帮助读者更好地理解和实现SPLL。 适用人群:从事电力电子、自动化控制、嵌入式系统的工程师和技术人员,尤其适用于有一定DSP编程基础的研发人员。 使用场景及目标:① 实现单相锁相环在DSP28335上的稳定运行;② 提供频率和相位跟踪的功能,确保系统在不同电网条件下的稳定性和可靠性;③ 通过调试和优化,提高系统的响应速度和控制精度。 其他说明:文章不仅提供了理论解释,还有具体的代码实现和调试建议,有助于读者快速掌握SPLL的实现方法并在实际项目中应用。

    基于MATLAB设计的 GUI漂浮物垃圾分类检测(高分项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载

    基于前景与背景分割的图像处理:MATLAB实现流行排序模型及其优化

    内容概要:本文详细介绍了基于前景和背景分割的图像处理技术,特别是流行排序模型的MATLAB实现。文章首先解释了图像分割的基本概念以及流行排序模型的工作原理,指出传统模型存在的图结构和边缘权值问题,并提出改进措施。接着,通过具体的MATLAB代码展示了如何读取图像、构建图结构、设置边缘权值、利用标记点进行流形排序,最终实现图像分割。文中还讨论了多种优化手段,如k近邻动态调整图结构、高斯核计算权值、加入坐标信息等,以提高分割精度和效率。此外,针对大尺寸图像提出了超像素预处理的方法。 适合人群:对图像处理感兴趣的科研人员、学生以及有一定编程基础的开发者。 使用场景及目标:适用于需要精确分离图像中前景和背景的应用场合,如医学影像分析、自动驾驶、安防监控等领域。目标是帮助读者掌握基于图的流形排序模型的具体实现方法和技术要点,从而应用于实际项目中。 其他说明:文章提供了完整的MATLAB代码示例,便于读者理解和实践。同时强调了算法的灵活性和可扩展性,鼓励读者尝试不同的参数配置和优化策略,以获得更好的分割效果。

    基于MATLAB的界面GUI信号与系统数字信号设计(高分项目).zip

    项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载

    C#实现OPC UA/DA通信:工业上位机必备的无界面通信代码模板

    内容概要:本文详细介绍了使用C#实现OPC UA和OPC DA通信的方法,提供了完整的代码示例。首先讲解了OPC DA的实现方式,包括连接服务器、创建组和读取标签的具体步骤,并强调了需要注意的细节如DCOM权限和异常处理。接着深入探讨了OPC UA的实现,推荐使用OPCFoundation的官方库,涵盖了连接设置、节点读取以及证书处理等内容。文中还分享了一些实战经验,如性能优化技巧、异常处理策略和常见的错误解决办法。 适合人群:从事工业自动化领域的开发人员,尤其是需要与PLC进行数据交换的技术人员。 使用场景及目标:适用于需要快速搭建工业上位机通信系统的开发者,帮助他们掌握OPC UA和OPC DA的基本实现方法,确保在实际项目中能够稳定可靠地进行数据采集和传输。 其他说明:文中提供的代码均为控制台应用程序形式,便于集成到现有项目中。同时提醒开发者在生产环境中务必谨慎处理安全性相关的问题,如证书管理和权限配置。

    空气弹簧对车辆曲线通过性能的影响

    空气弹簧对车辆曲线通过性能的影响

    1fd6d71d-0fda-4728-91c4-90b50fe43b0.zip

    1fd6d71d-0fda-4728-91c4-90b50fe43b0.zip

    安川伺服驱动器调试工具SigmaWin+各版本特性与应用详解

    内容概要:本文详细介绍了安川伺服驱动器调试工具SigmaWin+的不同版本及其应用场景。主要内容涵盖7系列、5系列和3系列软件的特点、适用范围以及常见问题解决方法。文中提供了大量实用的代码片段,帮助工程师更好地理解和使用这些工具进行参数设置、故障排除和性能优化。同时强调了正确选择软件版本的重要性,并分享了一些避免常见错误的经验。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要频繁调试安川伺服驱动器的专业人士。 使用场景及目标:①掌握不同版本SigmaWin+的功能特点及最佳实践;②提高伺服驱动器调试效率,减少人为失误;③利用提供的代码片段加速特定任务的完成,如参数设置、自动化测试等。 其他说明:文章不仅解释了各个版本的技术细节,还给出了许多实际操作中的技巧和注意事项,旨在帮助读者更加高效地运用SigmaWin+进行日常维护和支持工作。此外,作者还特别提到了关于版本选择、多语言支持等方面的潜在陷阱,提醒使用者谨慎对待。

    JAVA源码 + SpringBoot+vue+mysql 校园共享系统 + 数据库 + 文档

    内含文档,可轻松上手。

    Delphi 12.3控件之TMS VCL UI Pack v13.1.8.0.7z

    Delphi 12.3控件之TMS VCL UI Pack v13.1.8.0.7z

    ssm高校课程评价系统 LW PPT.zip

    Java项目基于ssm框架的课程设计,包含LW+ppt

    Delphi 12.3控件之EhLibInstaller D12.exe

    Delphi 12.3控件之EhLibInstaller D12.exe

    毛玻璃拟态UI个人引导页优化版.zip

    毛玻璃拟态UI个人引导页优化版,文本可编辑,自适应可换背景。

    30kW三相PFC充电桩核心技术解析:基于TMS320F28069的高精度控制与算法实现

    内容概要:本文深入探讨了一款30kW三相PFC充电桩的技术细节,涵盖硬件设计、主控芯片选择、关键算法实现及其性能表现。文中详细介绍了主电路采用的T型三相维也纳结构,主控芯片TMS320F28069的特点及其应用,包括CLA协处理器的优势。同时,对锁相环算法、PWM控制、中点平衡控制等进行了详细的解释,并提供了相应的代码示例。此外,还分享了一些实战经验和注意事项,如DQ变换的正确实现、滞回控制的应用技巧等。最后,附上了27页的量产测试报告,展示了该程序在实际生产环境中的稳定性和可靠性。 适合人群:从事电力电子、嵌入式系统开发的专业人士,尤其是对大功率充电设备感兴趣的工程师和技术爱好者。 使用场景及目标:适用于希望深入了解30kW三相PFC充电桩内部工作机制的研发人员。通过学习本文,可以掌握从硬件设计到软件实现的完整流程,为类似项目提供宝贵的参考资料和技术支持。 其他说明:本文不仅提供了理论知识,还结合了大量的实战经验,帮助读者避免常见陷阱,提高开发效率。

    昆仑通态触摸屏与国产380系统变频器的485Modbus通讯控制及参数设置详解

    内容概要:本文详细介绍了如何利用昆仑通态触摸屏通过RS485接口和Modbus协议控制国产380系列变频器。主要内容涵盖硬件连接、Modbus地址映射、控制命令(如启停和频率设定)、参数读取方法以及常见的调试技巧和注意事项。文中提供了具体的Python和VB代码示例,帮助用户理解和实现相关功能。此外,还分享了一些实战经验,如终端电阻的正确使用、数据格式转换、通讯参数配置等。 适用人群:从事工业自动化领域的工程师和技术人员,尤其是对Modbus协议和变频器控制有一定了解的从业者。 使用场景及目标:适用于需要通过昆仑通态触摸屏远程控制国产380系列变频器的应用场合,旨在提高系统的集成度和灵活性,降低硬件成本,提升工作效率。 其他说明:文章强调了实际操作中的细节和易错点,如寄存器地址的十进制与十六进制转换、数据字节序问题、通讯超时设置等,确保用户能够顺利进行系统搭建和调试。

    AI深度思考大模型Deepseek-清华大学使用指南及技巧大全

    AI深度思考大模型Deepseek-清华大学使用指南及技巧大全

Global site tag (gtag.js) - Google Analytics