springboot3整合redis

本文介绍了如何在SpringBoot项目中集成Redis,包括添加依赖、配置Redis连接参数,使用Spring官方提供的RedisTemplate进行操作,以及自定义RedisTemplate以支持复杂项目的需求。
摘要由CSDN通过智能技术生成

redis在我们的日常开发中是必不可少的,本次来介绍使用spring boot整合redis实现一些基本的操作;

1、新建一个spring boot项目,并导入相应的依赖;

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

这个依赖内部已经包含了lettuce,所以我们要操作redis数据库只需要引入一个依赖即可。

版本:springboot3.2.2    redis7.0.12

2、配置相应的yml文件:

spring:
  data:
  # redis配置
    redis:
      # Redis服务器地址
      host: 192.168.231.110
      database: 0
      # Redis服务器连接端口
      port: 6379
      # Redis服务器连接密码(默认为空)
      password: 123456
      # 连接超时时间
      timeout: 10s
      lettuce:
        pool:
          # 连接池最大连接数
          max-active: 200
          # 连接池最大阻塞等待时间(使用负值表示没有限制)
          max-wait: -1ms
          # 连接池中的最大空闲连接
          max-idle: 10
          # 连接池中的最小空闲连接
          min-idle: 0

在spring boot3版本之前,是spring.redis;但是在3.0版本之后,默认就是spring.data.redis。

3、直接进行操作

spring官方已经封装了用于操作redis的模板类,我们可以直接使用。

RedisTemplate是spring官方封装好的类,我们可以直接使用来进行对redis的操作。(注意使用的时候,要注入相应的泛型,不然会提示找不到相应的依赖)在spring boot3版本之前,如果不注入泛型也可以,但是在3.0版本之后,如果不指定相应的泛型,那么在启动的时候就会报错,显示找不到相应的类型


      @Resource
    private RedisTemplate<String,String> redisTmplate;

测试代码:

@Test
void ee() {

    redisTmplate.opsForValue().set("name", "李四");
    System.out.println(redisTmplate.opsForValue().get("name"));
}

运行结果:

在redis中查看:

查看具体详情:

可以看到我们存入的“李四”是一堆乱码,这主要是redis内部的编码问题。我们只是在redis内部查看的时候显示乱码,并不影响我们在Java客户端的使用。

如果想要在redis内部也显示中文,可以在连接redis的时候在命令的最后加上 --raw

--raw选项用于指示redis-cli在交互中使用原始格式输出。

redis-cli -a 123456 --raw

我们再次进入redis的客户端,再次查看我们存入redis中的数据:

RedisTemplate有许多的子类,我们也可以使用它的子类,这样功能更强大一些;

如StringRedisTemplate

这个效果与我们使用RedisTemplate<String,String>的效果一样。

当然我们也可以自定义redis的实现逻辑,以适应我们不同的项目需求;

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory ){
        RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
//        设置key序列化方式为StringRedisSerializer
        redisTemplate.setKeySerializer(new StringRedisSerializer());
//        设置value序列化方式为json,使用GenericJackSonJsonRedisSerializer替换默认的jdk序列化
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}

使用我们自定义的RedisTemplate

@Autowired
    private RedisTemplate<String,Object> redisTmplate2;

@Test
    void contextLoads() {
    List<String> list = new ArrayList<>();
    list.add("张三");
    list.add("李四");
        redisTmplate2.opsForValue().set("testList", list);
        System.out.println(redisTmplate2.opsForValue().get("testList"));
    }
}

运行结果:

redis客户端的数据:

可以看到,我们选择自定义redis的实现之后。使用起来就方便了很多,如果是比较简单的项目,那么使用StringRedisTemplate就可以解决相应的业务问题,但是在复杂的项目中,建议还是自定义一个RedisTemplate的实现类,使用自己的实现类会更方便一些,也更利于项目的扩展。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张乔24

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值