Spring Data Redis整合Redis流程源码分析

一:版本信息如下.

    1.1 SpringBoot的版本:1.5.10.RELEASE.

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.10.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

   使用 spring-boot-starter-data-redis.(这里不同在引入jedis了,已经引入了).查看Maveny依赖 1.8.10.RELEASE的版本

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

  《Spring Data Redis整合Redis流程源码分析》

 二:SpringBoot对Redis的支持.

     2.1 根据Redis的不同的Java客户端(jedis和jredis以及Lettuce和Spullara),Spring Data Redis提供的ConnectionFactory.

    看一下源码目录,加深理解.工厂设计模式案例如下.

    SpringBoot默认为我们配置了JedisConnectionFactory,RestTemplate,StringRedisTemplate,我们可以直接通过配置文件,指定Redis服务器host,port,password,database,以及一些连接池,使我们直接在SpringBoot添加Spring-data-redis直接注入RedisTemplate和StringRedisTemplate后可以直接进行业务操作了.那个创建连接工厂,以及配置RestTemplate等就不需要我们来实现了.只为简洁明了.通过源码可以看到,SpringBoot为这些常用的框架都多了默认的整合配置,就好比泡面佐料已经配好了,你在需要吃的时候只需要注入热水即可.

   同时SpringBoot为我们默认的配置如下.

   位于

 《Spring Data Redis整合Redis流程源码分析》 

《Spring Data Redis整合Redis流程源码分析》

 《Spring Data Redis整合Redis流程源码分析》

 《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》可以看到在自动配置的类中,引用了spring.data.redis.xxx的实现类,这也是为什么要SpringBoot Data Redis引入依赖的原因.

RedisConnectionFactory

《Spring Data Redis整合Redis流程源码分析》

RedisCommands(接口多继承各种操作命令接口).

《Spring Data Redis整合Redis流程源码分析》

RedisKeyCommands(常用的key操作封装为key命令接口).就是将Redis的各种命令封装成了Java的实现方法了.

《Spring Data Redis整合Redis流程源码分析》

RedisConnection(定义Redis的连接抽象方法)

《Spring Data Redis整合Redis流程源码分析》

JedisConnectionFactory

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

AbstractRedisConnection(定义抽象的连接方法,实现RedisConnection)

《Spring Data Redis整合Redis流程源码分析》

JedisConnection(具体的连接产品继承抽象连接类,实现自己的连接方式)

《Spring Data Redis整合Redis流程源码分析》

JredisConnection

《Spring Data Redis整合Redis流程源码分析》

上述整理了一下各个连接接口类这下清晰多了.

2.2 配置Redis.

      SpringBoot为Redis已经自动注入了两个模板类,先来看一下吧.RedisTemplate和StringTemplate进行数据操作.StringRedisTemplate只是对键值都是字符型的数据操作.

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

使用条件注解,当这个RedisAutoConfiguration缺少Bean时,默认注入一个name是redisTemplate的模板类.

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

RedisTemplate类

《Spring Data Redis整合Redis流程源码分析》

RedisOperations(封装了Redis的各种数据操作)

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

RedisOperations

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

其中每一种操作类型有都进行了接口封装.下面就看一下五种数据类型的操作接口.

ValueOperations<K,V>

《Spring Data Redis整合Redis流程源码分析》

ListOperations<K,V>对应List

《Spring Data Redis整合Redis流程源码分析》

SetOperations<K, V>对应Set

《Spring Data Redis整合Redis流程源码分析》

ZSetOperations<K,V>对应Sorted Set

《Spring Data Redis整合Redis流程源码分析》

HashOperations<H, HK, HV>对应于Hash.

《Spring Data Redis整合Redis流程源码分析》

2.3 两个模板类提供的数据访问方法.(五种类型的数据操作方法).这些方法调用Redis的命令的方式提供了实现.当然还有基于注解的操作Redis.

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

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

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

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

     opsForHash():操作含有hash的数据.

2.4 Serializer的定义.

        我们数据存储到Redis的时候,我们的键值Key和Value都是通过Spring提供的Serializer序列化到db中的.不是有16个db嘛.

        RedisTemplate默认使用的是JdkSerializationRedisSerializer.

        RedisTemplate位于org.springframework.data.redis.core;

《Spring Data Redis整合Redis流程源码分析》

        StringRedisTemplate默认使用的是StringRedisSerizlizer.

        StringrRedisTemplate位于org.springframework.data.redis.core;

《Spring Data Redis整合Redis流程源码分析》

那么Spring Data为我们都提供了哪些序列化的工具呐?一起来看一看吧.

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

看一下Java客户端连接工具Jedis的实现.

《Spring Data Redis整合Redis流程源码分析》

《Spring Data Redis整合Redis流程源码分析》

至此简单的了解了SpringBoot为Redis的默认配置以及我们的引入Spring Data Redis都完成了哪些配置任务,整合Redis有了更加更清晰的认识,其他的Data大多也是这样实现的思路.

    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/HcJsJqJSSM/article/details/84657930
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞