为什么使用Spring Data Redis
首先Spring Data Redis
是Spring
框架提供的用于操作Redis的客户端。
Spring框架是一个全栈Java程序框架,通过DI
、AOP
和便携的服务抽象提供一个轻量的容器和非侵入编程模型支持。
NoSQL存储为传统的关系型数据库提供了横向扩展和速度上的替代,Key-Value存储是目前NoSQL领域的主要成员。
Spring Data Redis(SDR)
框架通过消除冗余的、重复的集成代码,使Spring程序能简单的使用Redis的Key-Value存储。
Spring Data Redis目前支持两种驱动:Jedis和Lettuce,可以看成是这两种驱动的统一封装,以高度统一的形式屏蔽了底层驱动的操作细节,向用户提供一种统一的API,大致结构如下:
Spring Data Redis整体结构
Spring Data Redis
与 Spring Data
家族的其他数据操作如:Spring Data JDBC
,以类似的结构进行封装,降低用户的学习成本;只要使用过其中一种Spring Data
技术,对其他的数据源操作能依葫芦画瓢的进行,封装的整体结构如下:
将封装的层次分为4部分:
- 底层的工厂层和连接层,这里会依据驱动的不同而有不同的实现;连接层可以直接与
Redis Server
进行交互,采用二进制数据和命令进行。 - 模板层是对连接层的进一步封装,对Redis的每种数据类型,都封装一个操作类,与
Redis Server
进行交互,如String
类型的ValueOperations
;而RedisTemplate
持有所有类型操作的引用,所以可以直接通过定义RedisTemplate
对Redis进行操作;RedisTemplate
封装了通用的操作,如删除key,设置过期时间,对不同数据类型的操作通过具体的操作类进行。 - 键绑定层是对模板层的更进一步封装,每个类型的实例只能操作单一的键值(实例化时已经指定了键)
系统要求与学习资料
Spring Data Redis
的系统要求:Spring Data Redis 1.x --> JDK 1.6 + 、Redis 2.6.x +
常用的Redis Java客户端有:Jedis、Lettuce、Redison、Spring Data Redis,对应的学习资料如下:
Jedis:https://github.com/xetorthio/jedis/wiki
Lettuce:https://github.com/lettuce-io/lettuce-core/wiki
Redison:https://github.com/redisson/redisson
SPR:https://docs.spring.io/spring-data/redis/docs/2.0.2.RELEASE/reference/html/
更多客户端参照:http://www.redis.net.cn/clients/#java