【Redis】Redis的Java客户端-SpringDataRedis

SpringData是Spring中数据操作的模块,包含是spring对各种数据库操作的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis。

打开官网,可以发现在 SpringData 下就有各种各样的操作,这些常见的数据库操作全部都属于 SpringData 这个模块,Spring Data Redis 就是其中之一,它里面封装的当然就是对redis的各种各样的操作。

image-20240523171710364

可以发现它的版本也已经迭代版本非常多了。

  • Branch:表示 Spring Data Redis 的分支版本,例如 3.2.x、3.1.x 等。
  • Initial Release:表示该分支版本的初始发布日期。
  • End of Support:表示该分支版本的支持结束日期,即社区或开源支持的结束日期。
  • **End Commercial Support **:表示该分支版本的商业支持结束日期,通常是由提供商业支持服务的公司(例如 Pivotal 或 VMware)提供的。星号()可能表示有额外的注释或条件,具体解释可能会在页面底部或者文档的其他部分提供。

但是整体使用上差异并不是很大。

image-20240523174443042

那它具备什么特征呢?首先spring重来不会重复去造轮子,它都是集成,因此它其实是对其他redis客户端的整合(spring不能说抄袭)。

  • 提供了对不同Redis客户端的整合(Lettuce和Jedis),并且要整合,就应该提供一套统一的标准
  • 提供了RedisTemplate统一API来操作Redis,底层的实现就是由Lettuce和Jedis来实现的

在封装的基础上,它还做了很多很多的支持

  • 支持Redis的发布订阅模型

  • 支持Redis哨兵和Redis集群

  • 支持基于Lettuce的响应式编程(可以结合Spring的WebFlux)

  • 支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化

    • 序列化:将JDK、JSON、字符串、Spring对象这些变成字符串或字节。
    • 反序列化:将redis中读到的字节再变成Java中的对象 / 字符串。

    对比:在上节Jedis代码中,set()方法 中 key 和 value 类型都是字符串类型,要么是字节数组(之前讲过,Redis底层编码都是字节数组,无非就是编码格式不一样)。但假设我现在有一个Java对象需要存储,此时它就做不到了,除非你手动给它做序列化,变成字符串或字节。

  • 支持基于Redis的JDKCollection实现

    JDKCollection:JDK中各种各样的结合,它基于redis重新实现了一下这些集合(队列、链表等)。

    为什么要重新实现呢?因为基于redis的实现是分布式的,即跨系统的。

SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的API。

Jedis中方法名就是命令名称,redis中有上百个命令,那么Jedis类中就封装了上百个方法,它的好处是学习成本低,但是类相对来讲就比较臃肿了,里面东西特别多。

但是这些API的封装是有规律的,它跟Jedis不同。我们知道,Redis官方也对Redis命令做了分组,例如有通用命令、有专门操作字符串的命令、专门操作hash的命令…

而我们的RedisTemplate它也做了这些事,它的内部提供了一系列的API,它也将不同数据类型的API封装到了不同的类型中,这些API的名字都叫做opsFor,它的返回值都是Operations对象,这些对象中就封装了各种操作:

RedisTemplate 本身封装的就是一些通用的命令。

1652976773295

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值