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

这里我们也可以使用工具去进行查看~~,接着调用另外的一个接口

妥妥的

最近网站已经做好,并且已经上线,欢迎各位留言~~

经验分享 程序员 微信小程序 职场和发展