设为首页 收藏本站
查看: 970|回复: 0

[经验分享] Spring Data Redis学习

[复制链接]

尚未签到

发表于 2017-12-21 08:39:13 | 显示全部楼层 |阅读模式
前言

Spring Data Redis project,应用了Spring概念来开发使用键值形式的数据存储的解决方案。我们(官方)提供了一个 "template" ,这是一个高级别的抽象,来发送和接收消息。你会注意到它与Spring框架对JDBC的支持有些类似。
1、新功能

最近更新中 新的、且 值得一提的功能。
1.1、Spring Data Redis 1.8 新特性


  • Jedis升级到2.9。
  • Lettuce升级到4.2。(注意,Lettuce 4.2要求Java8)。
  • 支持Redis GEO 命令。
  • 使用Spring Data Repository抽象来支持Geo索引。
  • 基于HashMapper实现的MappingRedisConverter。
  • 在repository支持中支持PartialUpdate。
  • 对于连接到Redis cluster的SSL支持。
  • 当使用Jedis时,支持通过ConnectionFactory来设置client name。


1.2、Spring Data Redis 1.7 新特性


  • 支持RedisCluster。
  • 支持Spring Data Repository抽象。
1.3、Spring Data Redis 1.6 新特性


  • Lettuce Redis驱动,由wg/lettuce切换到mp911de/lettuce。
  • 支持ZRANGEBYLEX.
  • 增强了ZSET的range操作,包括 +inf 、 -inf。
  • RedisCache的性能改进,更早释放连接。
  • Generic Jackson2 RedisSerializer,利用了Jackson的多态反序列化


1.4、Spring Data Redis 1.5 新特性


  • 添加对Redis HyperLogLog命令的支持:PFADD、PFCOUNT、PFMERGE。
  • 可配置的JavaType查找,用于基于RedisSerializers的Jackson。
  • 基于PropertySource的配置,用于连接到Redis Sentinel。

介绍

本文档是Spring Data Redis (SDR) Support的引用指导。它结束了Key Value模块概念和语法,以及不同存储命名空间的语义。
如果想要key value存储或者Spring的介绍,或者Spring Data例子,请转到 Getting Started,本文档仅涉及到Spring Data Redis支持,并默认用户熟悉key value存储 以及Spring 的概念。
2、为什么选择Spring Data Redis?

Spring框架,是引领潮流的全栈Java/JEE应用框架。它提供了一个轻量级容器,一种非侵入式的编程模型 -- 这是由依赖注入、AOP、以及便携的服务抽象开启的。
NoSQL存储,提供了传统RDBMS之外的一种选择。
SDR框架,使得利用Redis键值存储非常简单,消除了繁复冗余的任务和呆板的代码(指获取连接、释放资源)。
3、要求


  • SDR 1.x要求JDK 6.0及以上,要求Spring框架4.3.9.RELEASE及以上。
  • Redis 2.6.x及以上。

4、开始

学习一个新框架并不简单直接。在本部分,我们(官方)试图提供一个 我们认为的 简单易懂的指导,来开始使用SDR。当然,你可以创建适合自己的学习路径,如果可以,请告诉我们,以便帮助其他人。
4.1、第一步

如同前面所解释的,SDR提供了Spring框架和Redis键值存储的集成。因此,掌握这两个框架非常重要。  虽然本文档的每一部分都提供了相关资源的连接,但最好还是提前熟悉下。
4.1.1、了解Spring  Spring Data严重依赖Spring框架的核心功能,例如IoC容器、资源抽象、或者AOP。重要的不是掌握Spring的APIs,而是理解它们背后的概念。至少,应该熟悉IoC。简单的说,你对Spring了解的越多,越容易上手SDR。
  

4.1.2、了解NoSQL和键值存储

略。
4.1.3、尝试案例

在 http://github.com/spring-projects/spring-data-keyvalue-examples上,你可以找到各种各样的键值存储的例子。retwisj。
4.2、需要帮助?

4.2.1、社区帮助

stackoverflow上面,Spring Data 标签。
4.2.2、专业帮助

Pivotal Software, Inc。
4.3、跟随开发

略。
参考文档

5、Redis支持

Spring Data支持的键值存储中包括了Redis。
SDR提供了简单的配置和访问Redis的方式 -- 在Spring应用中。它提供了low-level和high-level抽象 -- 与存储交互,解放了用户。
5.1、Redis要求

Redis 2.6及以上、Java SE 6.0及以上。在connectors方面,Spring Redis集成了Jedis、JRedis(自1.7起已废弃)、SRP(自1.7起已废弃)、以及Lettuce,四个最流行的开源Java Redis库。
5.2、Redis支持高级视图

Redis支持提供了几个组件(按照依赖顺序):对于大多数人来说,high-level抽象和支持服务是最佳选择。请注意,用户可以在不同的层次之间切换 -- 例如,获取low-level连接(甚至native库)来与Redis通信。  

5.3、连接到Redis

使用Redis和Spring的第一步就是通过IoC容器连接到存储。想要实现连接,一个java connector(或者binding)是必需的。无论选择什么库,都只有一套SDR API,叫做 org.springframework.data.redis.connection package,以及RedisConnection和RedisConnectionFactory接口,来获取到Redis的活动连接。
5.3.1、RedisConnection 和 RedisConnectionFactory

RedisConnection 为Redis通信提供了构建模块,会处理与Redis后端的通信。也会将底层连接库的异常自动翻译成Spring的一致的DAO异常层级,因此,用户能够自由切换connectors,而不必修改代码。注意:对于需要native库API的情况,RedisConnection提供了专有方法getNativeConnection -- 会返回原生的、底层的用于通信的对象。  活动的RedicConnection由RedisConnectionFactory创建。另外,该工厂还扮演了PersistenceExceptionTranslator,就是说,一旦声明了,它们会允许用户进行透明的异常翻译。例如,通过使用@Repository和AOP的异常翻译。更多信息,见Spring框架的相关部分。
  注意:依赖于底层的配置,工厂会返回一个新的连接 或者 一个现有的连接(使用pool或者shared native connection时)。
  使用RedisConnectionFactory最简单的方式,是通过IoC容器配置相应的connector,并将其注入使用类中。
  重要:不幸的是,目前,不是所有的connector都支持所有的Redis功能。当调用底层库不支持的API时,会抛出UnsupportedOperationException。这种情况在将来可能被解决,视不同的connector的成熟情况。
  

5.3.2、配置Jedis connector

Jedis最简单的形式的配置:  

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"
  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  
xsi:schemaLocation="http://www.springframework.org/schema/beans
  
http://www.springframework.org/schema/beans/spring-beans.xsd">
  <!-- Jedis ConnectionFactory -->
  <bean
  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"/>
  
</beans>
  


生产使用时,用户可能想要调整设置,例如host或者password:

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-426332-1-1.html 上篇帖子: mybatis结合redis实战二级缓存(六) 下篇帖子: Redis Pipeline原理分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表