Spring Boot对Redis的支持

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/83242396

一 点睛

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;
}

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/83242396