新建Maven工程

image-20221005141158292

导入依赖

在pom.xml中导入相关依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<!-- redis核心依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>

创建启动类

1
2
3
4
5
6
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

创建配置文件,配置redis相关信息

在resource目录下创建application.yml配置文件,redis配置如下

1
2
3
4
5
6
7
8
9
10
spring:
redis:
# redis服务器ip地址
host: 127.0.0.1
# redis服务器密码
password:
# redis服务器端口
port: 6379
# 使用的redis数据库索引
database: 0

自定义序列化

redis默认使用JdkSerializationRedisSerializer进行序列化,序列化结果对我们的观察不友好,如设置key为"hello",value为"world"的键值对,在redis中呈现的结果如下

image-20221005194036050

对此,我们需要对redisTemplate进行自定义序列化,配置文件结构如下。注意,配置文件必须在主类所在包或其子包下,否则SpringBoot会扫描不到我们的配置类

image-20221005193636127

配置类RedisTemplate内容如下

注意方法名必须为redisTemplate,否则配置无效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Configuration
public class RedisConfig {

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 自定义配置类必须设置ConnectionFactory
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 使用String序列化方式序列化
RedisSerializer<String> stringSerializer = redisTemplate.getStringSerializer();
// 设置键的序列化方式
redisTemplate.setKeySerializer(stringSerializer);
// 设置hash键的序列化方式
redisTemplate.setHashKeySerializer(stringSerializer);
// 设置值的序列化方式
redisTemplate.setValueSerializer(stringSerializer);
// 设置hash值的序列化方式
redisTemplate.setHashValueSerializer(stringSerializer);
return redisTemplate;
}
}

测试

这里我们使用juit进行测试

添加上**@SpringBootTest和@RunWith(SpringRunner.class)**注解,只有这样,我们才能使用SpringBoot的强大功能,对RedisTemplate进行属性注入

1
2
3
4
5
6
7
8
9
10
11
12
@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
@Resource
RedisTemplate<String, Object> redisTemplate;

@Test
public void test01() {
// 使用RedisTemplate向redis服务器中设置键值对,如果设置成功,就说明Redis整合成功
redisTemplate.opsForValue().set("hello", "world");
}
}

测试结果:整合成功!