赞
踩
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的实现类,使用自己的实现类会更方便一些,也更利于项目的扩展。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。