我正在参加「掘金·启航计划」
前面我们说了模块化项目引入数据库的操作,今天我们看下引入redis是如何进行操作的,不得不说,pom的版本可太为难人了,版本冲突按照上讲的那个结构图居然没发现版本冲突,后来还是在project structure的lib下对照着报错的版本来发现的;spring-boot-autoconfigure2.3.0与2.0.6的冲突导致报错;但是神奇的是在解决了以后重新加入2.3.0版本,居然不会报错了,重启正常;
下面我们看下如何引入的redis吧,并且正常启动;
我们在项目pom文件引入spring-data-redis;
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.14.RELEASE</version>
</dependency>
在我们的svc业务模块引入spring-boot-starter-data-redis;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.5.5</version>
</dependency>
接着我们需要在配置文件中加上redis的连接地址,这里就不放上去了,下面我们写个接口测试一下能否连接成功;
@RestController
@RequestMapping("/api/test")
public class RedisTestController {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@GetMapping("/testRedis")
public void testRedis() throws InterruptedException {
System.out.println(redisTemplate.opsForValue().get("XXXXXXX"));
redisTemplate.opsForValue().set("xxx","123",1, TimeUnit.MINUTES);
Long xxx = redisTemplate.opsForValue().getOperations().getExpire("xxx",TimeUnit.SECONDS);
System.out.println(xxx);
}}
最后返回null 59,其实发现写这个很简单就是引入包,就是解决冲突特麻烦(解决冲突一定要看包依赖和maven的依赖结构图,比百度好使多了),为了解决redis序列化的问题(不序列化可能会出现乱码的问题),我们需要对redis的配置进行处理下,我是用Jackson进行序列化的,也可以用其他序列化方式,我从网上找了这个序列化的方式,
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, ?> getRedisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, ?> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setEnableTransactionSupport(true);
template.setConnectionFactory(factory);
return template;
}
}
这样我们不用加其他配置了,靠mysql和redis已经可以满足很多场景了,其他的一些工具jar按需引入就行,就是往上面堆功能了;好啦🥗🥗🥗;
结束结束,那就🛴🛴🛴