1.获取一个RedisTemplate对象
一般都是通过连接池连接Redis的,要在spring中使用Redis,首先,我们需要配置JedisPoolConfig对象,如下图:
在使用 Spring提供的 RedisTemplate之前需要配置 Spring所提供的连接工厂,在 Spring Data Redis 方案中它提供了 4 种工厂模型:
JredisConnectionFactory。 JedisConnectionFactory。 LettuceConnectionFactory。 SrpConnectionFactory。
如果想换成其他的连接工厂,修改bean标签里面的class属性为对应的工厂模型类即可。
普通的连接使用没有办法把 Java对象直接存入 Redis,而需要我们自己提供方案,这时往往就是将对象序列化,然后使用 Redis 进行存储,而取回序列化的内容后,在通过转换转变为 Java 对象, Spring 模板中提供了封装的方案,在它内部提供了 RedisSerializer 接口(org.spring企amework.data.redis.serializer.RedisSerializer)和一些实现类,如下图:
下面几种方法实现了RedisSerializer接口:
-
GenericJackson2JsonRedisSerializer,通用的使用 Json2.jar 的包,将 Redis 对象的序 列化器。
-
Jackson2JsonRedisSerializer<T>,通过 Jackson2.jar包提供的序列化进行转换。
-
JdkSerializationRedisSerializer<T>, 使用 JDK 的序列化器进行转化。
-
OxmSerializer, 使用 SpringO/X 对象 Object和 XML相互转换。
-
StringRedisSerializer, 使用字符串进行序列化 。
-
GenericToStringSerializer,通过通用 的字符串序列化进行相互转换。
使用它们就能够帮助我们把对象通过序列化存储到 Redis 中,也可以把 Redis存储的内容转换为 Java对象,为此 Spring提供的 RedisTemplate还有两个属性。
• keySerializer 一键序列器 。 • valueSerializer 一值序列器。
这样就配置了 一个 RedisTemplate 的对象,并且 spring data redis 知道会用对应 的序列化器去转换 Redis 的键值。
2.Spring 对 Redis API 的基本封装
Java有多种 Redis 的 API,如:Jedis Jredis、Lettuce 等。为了融合这些不同的 APL Spring 给出 一个对底层操作的接口 RedisConnection,通过这个接口就消除了各种连接 API的差异,提供统一的接口规范来简化操作,如图:
Spring 对 Java 多种 Redis 连接 API 进行封装,而各个连接的实现类都继承抽象类AbstractRedisConnection,而这个抽象类实现了 RedisConnection 接口。所以对于使用者而言,只需要知道 RedisConnection 接口的 API 就可以消除各个 API 的差异了。
Spring 会提供创建这个接口对象的工厂----RedisConnectionFactory。其实就是上面第一点的创建工厂连接,如图:
3.Spring 对 Redis 命令的封装
Spring对Redis的6种数据类型的命令进行了更深层次封装&#