SpringBoot之----整合Redis

文章目录

      • 简介
      • 1.源码分析
      • 2.导入依赖
      • 3.配置连接
      • 4.测试连接

简介

这篇文章我们简单了解SpringBoot如何整合Redis,介绍关于如何连接上Redis,进行简单测试:
首先我们应该注意:
从SpringBoot2.x之后,原先使用的Jedis被lettuce替代

Jedis:采用直连,模拟多个线程操作会出现安全问题。为避免此问题,需要使用Jedis Pool连接池!类似于BIO模式
lettuce:采用netty网络框架,对象可以在多个线程中被共享,完美避免线程安全问题,减少线程数据,类似于NIO模式

1.源码分析

首先先查看RedisAutoConfiguration中的源码:
SpringBoot之----整合Redis_第1张图片

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

	@Bean
	@ConditionalOnMissingBean(name = "redisTemplate")
	@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
	public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
	     // 默认的RedisTemplate直接使用此类内部默认设置操作数据,但是Redis对象需要序列化
     	// 泛型都是Object,后面使用的话,大都是RedisTemplate
		RedisTemplate<Object, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}

	@Bean
	@ConditionalOnMissingBean
	@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
	public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
		return new StringRedisTemplate(redisConnectionFactory);
	}

}

SpringBoot之----整合Redis_第2张图片

2.导入依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-redisartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-configuration-processorartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

3.配置连接

# 配置redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

4.测试连接

package com.wlm;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;

@SpringBootTest
class Redis02SpringbootApplicationTests {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        // opsForValue 操作字符串,类似于String
        // opsForList 操作List,类似于List
        // opsForSet 操作Set,类似于Set
        // ....等等,API其实就跟我们的五大常用基本类型常用的指令一样的
        // 除了基本的操作,我们常用的方法都可以通过redisTemplate直接操作,比如事务、基本的增删查改
        redisTemplate.opsForValue().set("key","xian_yu");
        System.out.println(redisTemplate.opsForValue().get("key"));
    }
}

输出结果:
在这里插入图片描述
这里有几个注意点:
环境得设置好
SpringBoot之----整合Redis_第3张图片
SpringBoot之----整合Redis_第4张图片
SpringBoot之----整合Redis_第5张图片
然后我们去客户端查看:
SpringBoot之----整合Redis_第6张图片
我们再去看源码默认的序列化:
SpringBoot之----整合Redis_第7张图片
SpringBoot之----整合Redis_第8张图片

你可能感兴趣的:(spring,boot,redis,Java,redis,spring,boot,java)