<!--继承父依赖-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!--spring-data-redis依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
<!--springboot依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--连接池依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<!--junit依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<!--json与java对象转换依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
</dependencies>
spring-data-redis集成了lettuce(线程安全)和jedis(线程不安全),这里配置的是lettuce,两者均为Redis的客户端。
spring:
redis:
port: 6379
host: localhost
password:
lettuce:
pool:
max-active: 8
max-idle: 0
min-idle: 0
max-wait: 100ms
# 最大空闲连接 (maxIdle):这个参数指定了连接池中可以保持的最大空闲连接数。
#当连接池中的连接数量超过这个值时,多余的空闲连接将被回收。如果你的应用程序具有较高的并发连接数量,
#你可以适当增大这个值,以便连接池中始终保持足够的可用连接。
# 最小空闲连接 (minIdle):这个参数指定了连接池中默认保持的最小空闲连接数。\
#当连接池中的空闲连接数量低于这个值时,连接池会创建新的连接来补充空闲连接的数量。
#这样可以避免每次需要连接时都创建新的连接,提高性能和响应速度。你可以根据你的应用程序的需要适当地调整这个值。
RedisTemplate是Spring Data Redis框架提供的一个用于与Redis数据库交互的核心工具类。它提供了一系列用于操纵Redis数据库的方法,可以方便地进行数据存储、读取和删除操作。通过RedisTemplate,开发者可以使用一种更高级别的抽象来操纵Redis数据库,而不必与低级的Redis命令打交道。同时,RedisTemplate也提供了与Spring框架无缝集成的功能,使得在Spring应用中使用Redis变得更加方便。
但是直接使用这个操作工具类,会出现下面这中情况
而且在redis可视化端查看是二进制字符
这个工具类会默认使用jdk默认的序列化方式
StringRedisTemplate是Spring Data Redis框架提供的一个封装Redis String类型数据操作的工具类。它是RedisTemplate的一个具体实现,专门用于操作Redis中的字符串数据(String类型)
@Test//redis中写入字符串
public void redisTest(){
stringRedisTemplate.opsForValue().set("name", "duhong");
String name =stringRedisTemplate.opsForValue().get("name");
System.out.println(name);
}
@Test//redis中写入对象,将对象转成json字符串再进行存取
public void redisTest1() throws JsonProcessingException {
User user=new User("duhong",12);
//java对象与json字符串的转换
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(user);
stringRedisTemplate.opsForValue().set("user", s);
String userJson =stringRedisTemplate.opsForValue().get("user");
User user1 = objectMapper.readValue(userJson, User.class);
System.out.println(user1.toString());
}