redisspringboot3整合
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 # 最大阻塞连接器的等待时间#xff08;使用负值表示无限制) max-wait: -1ms # 连接池中最大的空闲连接 max-idle: 10 # 连接池中最小空闲连接 min-idle: 0。
spring boot3版之前,是spring.redis;但在3.0版之后,默认情况下,spring.data.redis。
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;
测试代码:
@Testvoid ee() { redisTmplate.opsForValue().set("name", "李四"); System.out.println(redisTmplate.opsForValue().get("name"));}。
运行结果:
查看redis:
查看具体细节:
可以看出,我们存储的“李四”是一堆乱码,这主要是redis内部的编码问题。
运行结果:
查看redis:查看具体细节:可以看出,我们存储的“李四”是一堆乱码,这主要是redis内部的编码问题。当我们查看redis内部时,我们只显示乱码,不影响我们在Java客户端的使用。
如果你想在redis内部显示中文,在连接redis时,可以在命令的最后添加 --raw。
--raw。
用于指示的选项。
redis-cli。
原始格式输出用于交互。
redis-cli -a 123456 --raw。
我们再次进入redis的客户端,再次查看我们存储在redis中的数据:
Redistemplate有很多子类,我们也可以使用它的子类,这样的功能更强大一点b;
比如StringRedistemplate。
这种效果与我们使用Redistemplateteplate相同<String,String>同样的效果。
当然,我们也可以定制redis的实现逻辑,适应我们不同的项目需求;
@Configurationpublic 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 GenericJacksonJsonRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJacksonJsonRedisSerializer()); 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的实现类,使用自己的实现类会更方便,也更有利于项目的扩展。