整合Redis以及Redis的序列化

整合Redis以及Redis的序列化

最近做一个项目,考虑到性能问题决定整合Redis

开发环境

Spring Boot 2.2 目前最新版,尝个鲜;

整合过程

首先是用Spring Initializr 向导,如果只使用redis那就只选redis的模块,最多再多选一个web模块,不要在向导里选多余的模块,否则会有更多的配置,不配置就有可能给你报错,为了简单起见,我这里只选了redis模块,这是Maven依赖部分

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!--
        注:因为我这里使用的是spring boot 2.2 所以测试模块会有些不同,这个是
        Spring Initializr向导自动生成的,所以不必关关心,默认就好。
        -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
</dependencies>

然后是application.yml配置文件

spring:
  redis:
    database: 0
    host: 127.0.0.1
    password: ''
    port: 6379

非常简单的配置,没有什么大问题
Spring Boot 最大的好处就是自动配置功能,需要配置的功能写在配置文件或者配置类里,不需要写的功能就使用默认配置,那么Redis也一定有个自动配置类,我们来看看Redis的自动配置类都为我们配置了些什么

@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({
    LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {
   

	@Bean
	@ConditionalOnMissingBean(name = "redisTemplate")
	public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
			throws UnknownHostException {
   
		RedisTemplate<Object, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}

	@Bean
	@ConditionalOnMissingBean
	public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory)
			throws UnknownHostException {
   
		StringRedisTemplate template = new StringRedisTemplate();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}
}

加了@Configuration,一个经典的配置类
这个配置类里为容器注入了两个Bean, RedisTemplate 与StringRedisTemplate,查看StringRedisTemplate源码发现StringRedisTemplate只是继承了RedisTemplate<String,String>。
注意!
SpringBoot 自动注入的泛型泛型是RedisTemplate<Object,Object>,所以一会在自动注入的时候千万不要写成RedisTemplate<String,Object>,否则SpringBoot 会报错!!!

接下来写个测试

public class TestObject{
   
    private String name;
    private Integer code;
    private String phone;

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public Integer getCode() {
   
        return code;
    }

    public void setCode(Integer code) {
   
        this.code = code;
    }

    public String getPhone() {
   
        return phone;
    }

    public void setPhone(String phone) {
   
        this
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值