一:版本信息如下.
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>
二: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.xxx的实现类,这也是为什么要SpringBoot Data Redis引入依赖的原因.
RedisConnectionFactory
RedisCommands(接口多继承各种操作命令接口).
RedisKeyCommands(常用的key操作封装为key命令接口).就是将Redis的各种命令封装成了Java的实现方法了.
RedisConnection(定义Redis的连接抽象方法)
JedisConnectionFactory
AbstractRedisConnection(定义抽象的连接方法,实现RedisConnection)
JedisConnection(具体的连接产品继承抽象连接类,实现自己的连接方式)
JredisConnection
上述整理了一下各个连接接口类这下清晰多了.
2.2 配置Redis.
SpringBoot为Redis已经自动注入了两个模板类,先来看一下吧.RedisTemplate和StringTemplate进行数据操作.StringRedisTemplate只是对键值都是字符型的数据操作.
使用条件注解,当这个RedisAutoConfiguration缺少Bean时,默认注入一个name是redisTemplate的模板类.
RedisTemplate类
RedisOperations(封装了Redis的各种数据操作)
RedisOperations
其中每一种操作类型有都进行了接口封装.下面就看一下五种数据类型的操作接口.
ValueOperations<K,V>
ListOperations<K,V>对应List
SetOperations<K, V>对应Set
ZSetOperations<K,V>对应Sorted Set
HashOperations<H, HK, HV>对应于Hash.
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;
StringRedisTemplate默认使用的是StringRedisSerizlizer.
StringrRedisTemplate位于org.springframework.data.redis.core;
那么Spring Data为我们都提供了哪些序列化的工具呐?一起来看一看吧.
看一下Java客户端连接工具Jedis的实现.
至此简单的了解了SpringBoot为Redis的默认配置以及我们的引入Spring Data Redis都完成了哪些配置任务,整合Redis有了更加更清晰的认识,其他的Data大多也是这样实现的思路.