一 点睛
Redis是一个基于健值对的开源内存数据存储,当然Redis也可以做数据缓存。
二 Spring对Redis的支持
1 配置
Spring对Redis的支持是通过Spring Data Redis来实现的,Spring Data JPA为我们提供了连接相关的ConnectionFactory和数据操作相关的RedisTemplate。
根据Redis的不同的Java客户端,Spring Data Redis提供了如下的ConnectionFactory:
-
JedisConnectionFactory:使用Jedis作为Redis客户端。
-
JredisConnectionFactory:使用Jredis作为Redis客户端。
-
LettuceConnectionFactory:使用Lettuce作为Redis客户端。
-
SrpConnectionFactory:使用Spullara/redis-protocol作为Redis客户端。
配置方式伪代码如下:
@Bean
public RedisConnectionFactory redisConnectionFactory(){
return new JedisConnectionFactory();
}
RedisTemplate配置方式伪代码如下:
@Bean
public RedisTemplate<Object,Object> redisTemplate(){
RedisTemplate<Object,Object> template=new RedisTemplate<Object,Object>();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
2 使用
Spring Data Redis为我们提供了RedisTemplate和StringRedisTemplate两个模板来进行数据操作,其中,StringRedisTemplate只针对健值都是字符型的数据进行操作。
RedisTemplate和StringRedisTemplate提供的主要数据访问方法如下:
- opsForValue():操作只有简单属性的数据。
- opsForList():操作含有list的数据。
- opsForSet():操作含有set的数据。
- opsForZSet():操作含有Zset(有序的set)的数据。
- opsForHash():操作含有hash的数据。
3 定义Serializer
当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。
RedisTemplate默认使用的是JdkSerializationRedisSerializer。
StringRedisTemplate默认使用的是StringRedisSerializer。
Spring Data JPA为我们提供了下面的Serializer:
GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。
三 Spring Boot对Redis的支持
Spring Boot对Redis的支持,目录如下:
查看RedisAutoConfiguration源码,会发现它为我们默认配置了JedisConnectionFactory、RedisTemplate以及StringRedisTemplate,让我们可以直接使用Redis作为数据存储。
查看RedisProperties源码,使用“sping.redis”为前缀的属性在application.properties中配置Redis,主要属性参考如下源代码:
@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {
private int database = 0; //数据库名称,默认为db0
private String host = "localhost"; //服务器地址,默认为localhost
private String password; //数据库密码
private int port = 6379; //连接端口号
private int timeout;
private Pool pool; //连接池
private Sentinel sentinel;
}