spring-data-redis底层源码解析

spring-data-redis底层源码解析

1. 对SpringDataRedis介绍

SpringDataRedis是Spring大家族中的一个成员,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现,spring redis同时支持了Jedis,Jredis,rjc 客户端操作。

2.spring redis 源码设计逻辑
  1. Redis连接管理:封装了Jedis,Jredis,Rjc等不同redis 客户端连接
  2. Redis操作封装:value,list,set,sortset,hash划分为不同操作
  3. Redis序列化:能够以插件的形式配置想要的序列化实现
  4. Redis操作模板化: redis操作过程分为:获取连接,业务操作,释放连接;模板方法使得业务代码只需要关心业务操作
  5. Redis事务模块:在同一个回话中,采用同一个redis连接完成
3. spring redis连接管理模块分析

spring redis封装了不同redis 客户端,对于底层redis客户端的抽象分装,使其能够支持不同的客户端;连接管理模块的具体类大概有以下:

类名 职责
RedisConnection 提供了Redis通信的核心构建块,因为它处理与Redis后端通信。它还自动将底层连接库异常转换为Spring一致的DAO异常层次结构,这样就可以在不更改任何代码的情况下切换连接器,因为操作语义保持不变。(简单理解下,就是用来连接Redis的)
RedisConnectionFactory 是构建RedisConnection的工厂类
RedisCommands 继承了Redis各种数据类型操作的整合接口
JedisConnection 实现RedisConnection接口,将操作委托给Jedis
JedisConnectionFactory 实现RedisConnectionFactory接口,创建JedisConnection

spring-data-redis针对jedis提供了如下功能:

  1. 连接池自动管理,提供了一个高度封装的“RedisTemplate”类

通过RedisTemplate处理对象
RedisTemplate是Spring为方便操作Redis各种命令而封装出来的工具类,是spring data redis 中的核心操作类,提供了丰富的,通用的接口,用于针对某种类型或某些键
在这里插入图片描述
2. 针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
01
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键绑定操作
BoundGeoOperations Redis键绑定地理空间操作
BoundHashOperations Redis哈希键绑定操作
BoundKeyOperations Redis键绑定操作
BoundListOperations Redis列表键绑定操作
BoundSetOperations Redis设置键绑定操作
BoundValueOperations Redis字符串(或值)键绑定操作
BoundZSetOperations Redis zset(或排序集)键绑定操作

RedisOperations<K,V>
RedisTemplate实现了RedisOperations
在这里插入图片描述
RedisOperations(封装了Redis的各种数据操作)
其中每一种操作类型有都进行了接口封装.下面就看一下五种数据类型的操作接口
ValueOperations<K,V>

在这里插入图片描述
ListOperations<K,V>对应List
在这里插入图片描述
SetOperations<K, V>对应Set
在这里插入图片描述
ZSetOperations<K, V>对应 sortedSet
在这里插入图片描述
HashOperations<H, HK, HV>对应于Hash
在这里插入图片描述
两个模板类提供的数据访问方法.(五种类型的数据操作方法).这些方法调用Redis的命令的方式提供了实现.当然还有基于注解的操作Redis.

 opsForValue():操作只有简单属性的数据.String.

 opsForList():操作含有list的数据.

 opsForSet():操作含有set的数据

 opsForZSet():操作含有ZSet(有序的set)的数据.

 opsForHash():操作含有hash的数据.
 
序列化器 Serializer

在Spring Data中,用户(自定义)类型和原始数据之间的转换(反之亦然)在org.springframework.data.redis.serializer包中的Redis中进行处理
我们数据存储到Redis的时候,我们的键值Key和Value都是通过Spring提供的Serializer序列化到db中的

在这里插入图片描述
spring data 提供的序列化工具
在这里插入图片描述
提供的有相关的序列化器
02

4. demo项目配置

(1) 构建 Maven 工程 SpringDataRedisDemo
项目demo
(2) 添加相关启动器Lombok、Spring Data Redis、spring-data-common

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 使用spring-data-common -->
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值