Spring Data Redis配置+源码解析
Spring Data Redis简介
Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现,全家桶之一
Spring对redis缓存的设计思想则更加精妙,更加全面,不得不说大佬终究还是大佬,Spring能够一统Java不是没有原因的
Spring Data Redis概念
首先须要了解几个具体类的概念:
- RedisConnection:
提供了Redis通信的核心构建块,因为它处理与Redis后端通信。它还自动将底层连接库异常转换 为Spring一致的DAO异常层次结构,这样您就可以在不更改任何代码的情况下切换连接器,因为操作语义保持不变。(翻译自官网解释,其实简单理解下,就是用来连接Redis的)
- RedisConnectionFactory:
是构建RedisConnection的工厂类
- RedisStandaloneConfiguration:
Redis标准配置,用来构建RedisConnectionFactory须要的必要参数,比如host;port; password
- RedisSentinelConfiguration:
Redis哨兵模式的相关配置
- RedisClusterConfiguration:
Redis集群模式的相关配置
- RedisCacheManager:
顾名思义是Redis缓存管理器,是Spring基于Redis实现缓存的核心类
- RedisCacheConfiguration:
是RedisCacheManager的具体个性化配置项
redis的缓存基本架构:
Spring Data Redis缓存源码实现
spring底层通过封装多个RedisCache来实现不同场景下的缓存配置,其成员变量如下:
public class RedisCache extends AbstractValueAdaptingCache {
private final String name;
private final RedisCacheWriter cacheWriter;
private final RedisCacheConfiguration cacheConfig;
private final ConversionService conversionService;
}
name:标识不同的缓存,类似分组的概念。
RedisCacheWriter:是对Redis底层操作的封装,我们是通过RedisCache的相关接口来执行redis命令的,而RedisCache内部又是通过RedisCacheWriter来间接操作redis。
RedisCacheConfiguration:前面说RedisCacheConfiguration是RedisCacheManager的具体配置信息,更准确的说其实是对应RedisCache中的配置信息,因为RedisCacheManager内部维护了一个由若干个RedisCacheConfiguration组成的Map,在其初始化时会通过这个Map组装生成对应的RedisCache。
public class RedisCacheManager extends AbstractTransactionSupportingCacheManager {
private final RedisCacheWriter cacheWri