重温战场 发表于 2017-12-21 08:39:13

Spring Data Redis学习

前言

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]
查看完整版本: Spring Data Redis学习