Preface
Spring Data Redis项目通过使用键值样式的数据存储将核心Spring概念应用于解决方案的开发。我们提供了一个“模板”作为发送和接收消息的高级抽象。您可能会注意到Spring框架中JDBC支持的相似之处。
1. New Features
本节简要介绍最新版本中值得注意的新项目。
1.1. New in Spring Data Redis 1.8
-
升级到Jedis 2.9。
-
升级到Lettuce 4.2(注意:Lettuce 4.2需要Java 8)。
-
支持Redis GEO命令。
-
使用Spring数据存储库抽象支持地理空间索引(参见地理空间索引)。
-
基于MappingRedisConverter的HashMapper实现(参见哈希映射)。
-
在存储库中支持部分更新(请参见持久化部分更新)。
-
对连接到Redis集群的SSL支持。
-
在使用Jedis时,通过ConnectionFactory支持客户端名称。
1.2. New in Spring Data Redis 1.7
-
Support for RedisCluster.
-
Support for Spring Data Repository abstractions (see Redis Repositories).
1.3. New in Spring Data Redis 1.6
-
The
Lettuce
Redis driver switched from wg/lettuce to mp911de/lettuce. -
Support for
ZRANGEBYLEX
. -
Enhanced range operations for
ZSET
, including+inf
/-inf
. -
RedisCache中的性能改进,现在更早地释放连接。
-
通用的Jackson2 反序列化利用Jackson’s 多态反序列化。
1.4. New in Spring Data Redis 1.5
-
Add support for Redis HyperLogLog commands:
PFADD
,PFCOUNT
, andPFMERGE
. -
Configurable
JavaType
lookup for Jackson-basedRedisSerializers
. -
PropertySource
-based configuration for connecting to Redis Sentinel (see: Redis Sentinel Support).
Introduction
本文是Spring Data Redis (SDR)支持的参考指南。它解释了键值模块概念、语义和各种存储名称空间的语法。
有关键值存储、Spring或Spring数据示例的介绍,请参见入门。此文档仅引用Spring Data Redis支持,并假设用户熟悉键值存储和Spring概念。
2. Why Spring Data Redis?
Spring框架是领先的全堆栈Java/JEE应用程序框架。它提供了一个轻量级容器和一个通过使用依赖注入、AOP和可移植服务抽象支持的非侵入性编程模型。
NoSQL存储系统在水平可伸缩性和速度方面提供了传统RDBMS的替代方案。在实现方面,键值存储表示NoSQL空间中最大(和最古老)的成员之一。
Spring Data Redis (SDR)框架消除了通过Spring优秀的基础设施支持与存储交互所需的冗余任务和样板代码,从而简化了使用Redis键值存储的Spring应用程序的编写。
3. Requirements
Spring Data Redis2.x二进制文件要求JDK级别8.0及以上,Spring Framework 4.3.22.RELEASE及以上。
在键值存储方面, Redis 2.6.x或更高。Spring Data Redis目前针对最新的4.0版本进行测试。
4. Getting Started
略。。。。
Reference Documentation
Document structure
参考文档的这一部分解释了Spring Data Redis提供的核心功能。
Redis支持引入了Redis模块特性集。
5. Redis support
Spring数据支持的键值存储之一是Redis。引用Redis项目主页:
Redis是一个高级键值存储。它类似于memcached,但数据集不是易失性的,值可以是字符串,与memcached中的值完全相同,但也可以是列表、集合和有序集。所有这些数据类型都可以通过原子操作来操作,包括push/pop元素、添加/删除元素、执行服务器端联合、交集、集之间的差异等等。Redis支持不同类型的排序能力。
Spring Data Redis提供了来自Spring应用程序的简单配置和对Redis的访问。它提供了用于与存储交互的低级和高级抽象,使用户从基础设施的关注中解放出来。
5.1. Redis Requirements
Spring Data Redis要求Redis 2.6或以上,Java SE 6.0或以上。在语言绑定(或连接器)方面,Spring Redis集成了Jedis、JRedis(从1.7开始被弃用)、SRP(从1.7开始被弃用)和 Lettuce,这是四个流行的用于Redis的开源Java库。如果您知道我们应该集成的任何其他连接器,请给我们反馈。
5.2. Redis Support High-level View
Redis支持提供几个组件。对于大多数任务,高级抽象和支持服务是最佳选择。注意,在任何时候,您都可以在层之间移动。例如,您可以获得一个低级连接(甚至本机库)来直接与Redis通信。
5.3. Connecting to Redis
使用Redis和Spring时的首要任务之一是通过IoC容器连接到存储。为此,需要一个Java连接器(或绑定)。无论选择哪个库,您都只需要使用一组Spring Data Redis api(它在所有连接器上的行为都是一致的):org.springframework.data.redis.connection包及其RedisConnection和RedisConnectionFactory接口,用于处理和检索到Redis的活动连接。
5.3.1. RedisConnection and RedisConnectionFactory
RedisConnection为Redis通信提供了核心构建块,因为它处理与Redis后端的通信。它还自动将底层的连接库异常转换为Spring一致的DAO异常层次结构,这样您就可以在不更改任何代码的情况下切换连接器,因为操作语义保持不变。
对于需要本机库API的情况,RedisConnection提供了一个专用方法(getNativeConnection),该方法返回用于通信的原始底层对象。
RedisConnection对象是通过RedisConnectionFactory创建的。此外,工厂充当PersistenceExceptionTranslator对象,这意味着,一旦声明,它们允许您进行透明的异常转换。例如,您可以通过使用@Repository注释和AOP进行异常转换。有关更多信息,请参见Spring Framework文档中的专用部分。
根据底层配置,工厂可以返回新连接或现有连接(使用池或共享本机连接时)。
使用RedisConnectionFactory最简单的方法是通过IoC容器配置适当的连接器,并将其注入using class。
不幸的是,目前并非所有连接器都支持所有Redis特性。当调用底层库不支持的连接API上的方法时,将抛出UnsupportedOperationException。
5.3.2. Configuring the Jedis Connector
Jedis是Spring Data Redis模块通过org.springframework.data.redis.connection.jedis支持的连接器之一。其最简单的形式是,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:schemaLocatio