Redis - 11. SpringBoot 整合 Redis 6.2.5
一、Redis 后台启动配置
我们现在 Redis 启动还是得占用一个终端窗口,但是一般我们都是让 redis 后端运行,这里去配置一下(先去关闭 redis 运行)
这里的 daemonize 是 no,no 就是不后台启动,我们这里改成 yes 后启动~
可以看到,这里已经是后端启动了~~~
二、SpringBoot 整合 Redis
SpringBoot 版本:2.4.4
pom
<!-- redis 配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
这里要说一下,最开始我们是用的 Jedis 去连接 Redis 的,但是这个方式是使用阻塞的I/O,方法调用同步,程序流需要等到socket处理完I/O才能执行,不支持异步操作。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。
所以我们这里是使用的另外一种:Lettuce
但是这样直接直接接上去是不行的,我们还需要加一段 pom
<!-- redis依赖commons-pool 这个依赖一定要添加 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
application.yml
spring:
redis:
host: localhost
# password: 123456
port: 6379
timeout: 3000ms
database: 0
lettuce:
pool:
# 连接池最大连接数(使用负值表示没有限制) 默认 8
max-active: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
max-wait: 2000ms
# 连接池中的最大空闲连接 默认 8
max-idle: 8
# 连接池中的最小空闲连接 默认 0
min-idle: 0
这里要说一点,我们现在 redis 没有设置密码,所以这里是不需要写的~~~
序列化配置
这个是必须要配置的,不然就会出现乱码~,这里自己去创建一个 RedisConfig 的类
@Configuration
public class RedisConfig {
/**
* 配置自定义redisTemplate
* @return
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
然后我们就可以在我们的项目中使用 Redis 了。
等到我们使用 Redis 的时候,只需要在需要的地方引入 RedisTemplate<String, Object> 即可。
三、SpringBoot 中使用 Redis
创建一个 Controller,写两个方法~
@RestController
@RequestMapping("/redis")
public class RedisTestController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@GetMapping("/{keyname}/{text}")
public String setRedisValue(@PathVariable(value = "keyname")String keyname, @PathVariable(value = "text")String text) throws Exception {
redisTemplate.opsForValue().set(keyname, text);
return "success";
}
@GetMapping("/{keyname}")
public String getRedisValue(@PathVariable(value = "keyname")String keyname) throws Exception {
return (String)redisTemplate.opsForValue().get(keyname);
}
}
很简单的两个方法,这里主要说一下 redisTemplate 怎么去使用。
首先是我们去获取到一个操作对象,这里 redisTemplate 提供了很多的操作对象
我们这里使用的是 opsForValue,也就是普通的 key-value,接着调用 set,里面传递 key值,传递 value即可。
启动项目后,我们先看一下 redis 里面的 keys
现在已经被我清空了,我们通过接口请求一下
接下来,我们去查看一下 keys
这里我们也可以使用工具去进行查看~~,接着调用另外的一个接口
妥妥的
最近网站已经做好,并且已经上线,欢迎各位留言~~
